Gå til innhold

Hvordan sender man info til prosesser?


Anbefalte innlegg

Si at jeg har mpg123 som ligger som en prosess med et eller annet nummer som jeg kan få tak i med 'ps -A | grep mpg123', eller alternativt at jeg kjører en plugin til vim som kjører 'let i=system("mpg123 -C".foo."")'.

 

Hvordan kan jeg da sende informasjonen (her: bokstaven 'f') "forward" til mpg123?

Lenke til kommentar
Videoannonse
Annonse

Som kattemat sier, hvis programmet (mpg123) er laget slik at det lytter etter kommunikasjon av noe slag, så er jo det en grei løsning, men personlig bruker jeg å løse slike problemer vha pipes. Enkelt og behagelig. Problemet er at det funker vel dårlig hvis prosessen allerede er startet og du bare har pid-nummer, men er du nødt til å gjøre det sånn eller kan du starte et skript som setter opp pipes i begynnelsen av kjøringen?

Lenke til kommentar
...men er du nødt til å gjøre det sånn eller kan du starte et skript som setter opp pipes i begynnelsen av kjøringen?

Nå er jeg faktisk ikke helt med. Med pipes, mener du '|' eller mener du å gi prosessen et nummer til en port som den skal lytte på, IPC?

 

Men for å forklare litt bedre:

Jeg ønsker å starte en prosess, i dette tilfellet mpg123.

Jeg tenker da å starte prosessen med 'mpg123 -C file'.

Og jeg vil gjerne sende tastetrykk / bokstaver til prosessen, slik at jeg kan taste / sende 'f' igjennom et script, ifra kommandolinja, eller fra vim (hvis jeg har startet mpg123 med ':!mpg123 -C file').

Lenke til kommentar

Jeg vet dessverre ikke svaret, men jeg vil bare bable litt. Så hopp over denne posten om du vil :)

 

Dette er akkurat hvorfor KDE sin dcop er så stilig. Om jeg hører en playliste i f.eks. Noatun, kan jeg kjøre

 

dcop noatun Noatun forward

 

for å hoppe til neste sang,

 

dcop noatun Noatun back

 

for å gå til neste, osv osv. Jeg kan kontrollere alle aspektene ved avspilling og bruk av programmet generelt fra et script, ved å bruke dcop. Nå støtter ikke akkurat mpg321 dcop, men :)

Lenke til kommentar
Nå er jeg faktisk ikke helt med. Med pipes, mener du '|' eller mener du å gi prosessen et nummer til en port som den skal lytte på, IPC?

Det jeg mente var at du kunne lage et script som starter mpg123 med pipes, slik at scriptet får stdin og stdout, og dermed kan styre mpg123. Dette er jo en ren generell løsning som egner seg til alle kommando-baserte programmer. Hvordan det gjøres kommer jo helt an på hva slags script-språk som benyttes. Har selv brukt mye python i senere tid, der er det ihvertfall veldig enkelt (os.popen heter funksjonen)

 

Titta kjapt på filen "readme.remote" som følger med mpg123, programmet skal visstnok kunne startes med opsjonen -R for å kunne styres av andre programmer. Dessverre var det litt dårlig dokumentasjon på hvordan dette skulle gjøres :(

Endret av Langbein
Lenke til kommentar
Titta kjapt på filen "readme.remote" som følger med mpg123, programmet skal visstnok kunne startes med opsjonen -R for å kunne styres av andre programmer. Dessverre var det litt dårlig dokumentasjon på hvordan dette skulle gjøres :(

Det er det man har kildekoden til er det ikke? : )

Lenke til kommentar
hva med å titte på koden til f. eks xmms? Ikke akkurat et script, menmen

xmms er lett å styre fra kommandolinja. Du skriver bare noe a la

$ xmms forward

 

- husker ikke helt, men skulle være noe slikt ;) Litt lenge siden jeg var hjemme å brukte slike funksjoner.

 

(men dcop er nice ja, styrer Opera osv ved dcop fra irssi, slik at jeg kan få linkene raskt opp istedenfor å stresse med copy paste etc)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...