Fórumok
sziasztok!
olyan c programot szeretnk irni, amely segitsegevel egy masik, mar meglevo programot
vezerelhetek.
bovebben mondjuk van egy parancssoros mp3 lejatszo, es az megoldhato-e, hogy az inditasat,
leallitasat, billentyuzet esemenyeit (pl. p gomb - pause) egy sajat c programbol valtsam ki?
esetleg ha tudna valaki egy linket dobni, ha ez megvalosithato, nagyon megkoszonnem.
udv: szg.
Hozzászólások
Indítás/leállítás nyilván nem gond, de a bill eseménnyel már gond lehet.
Biztos kell ez neked?
mp3 fájlok lejátszásához inkább keress egy libet.
Esetleg nézz utána, hogy a programot lehet-e vezérelni pipe-on keresztül.
Bill események kiváltására én nem tudok ultimate megoldást (de ettől még lehet, hogy van).
"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee."
-- Ted Ts'o
A popen(3) fuggveny pont erre jo. Elindit egy parancsot, kapsz egy file descriptort, amivel tudsz irni a C programodbol a program stdin-jere VAGY tudsz olvasni a stdout-jarol, a ketto egyutt nem megy.
Ketiranyu kapcsolatot ugy tudsz letrehozni, hogy a C programodbol 2 pipe-ot hozol letre a ket iranyhoz (azaz osszesen 4 fd) es fork()-olsz, a parent-ben es a child-ben is lezarod a nem hasznalt fd-ket (2-2), a child-ban dup2()-vel a ket hasznalt pipe vegpontot a stdin-re es stdout-ra mappeled, majd az exec() csalad valamely fuggvenyevel betoltod a child-ban a vezerelni kivant programot. (huh, szep mondat lett)
A google-n az elso talalat ez volt: http://www.unixwiz.net/techtips/remap-pipe-fds.html
Ez a legutolso lepes kivetelevel epp ezt csinalja.
Ez nagyon jóóóó, köszi.
Én nem vagyok benne biztos, hogy az stdin átirányitása elég...
"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee."
-- Ted Ts'o
koszonom szepen mindenkinek a segitseget, utanajarok.
ha konkrétan mp3 lejatszás a téma, akkor mondjuk mpd ?
Pl. az mpg123 es a ximp3 olyan, hogy tudsz veluk kommunikalni, nem kell gomblenyomassal es hasonlokkal jatszani (konkretan en mar irtam is hozzajuk frontend-et). Az amarok, xmms pedig siman vezerelheto akar parancssorbol is, eleg a man-jukat megnezni.
az mp3 lejatszast csak peldanak irtam, igazabol az mPlayer-hez kene. szeretnek tobb videot egymas utan lejatszani, de ugy, h lejatszas kozben kicsit mashogy mukodjon a cucc. ha pl. pause-t nyomok, akkor ne az aktualis pontban alljon le, hanem az aktualis klip vegen.
+ gond, h minden egyes klipnel leall ill. ujraindul az mplayer, ezen is pocsolok jelenleg, mert a legjobb lenne egy total fekete hatter atvezetesnek, es h 1 mplayer jatsza az egeszet le, ne mindig uj nyiljon...
erre esetleg valakinek van tippje?
--fixed-vo azthiszem
mplayernek van erre egy -slave kapcsolója, ezután egyszerű parancsokkal vezérelheted az stdin-jén keresztül (ld. "SLAVE MODE PROTOCOL"). Ez direkt ilyesmire van kitalálva.
Én már láttam mplayer frontendet, ami nem új ablakban indította a videót, tehát vhogy megoldható (ha másképp nem, nézd meg a forrását egy ilyennek).
"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee."
-- Ted Ts'o
igen, feltetlenul es koszonom az infot!