Befehl an ein Programm senden

DarkBart

Mitglied
Hallo,

ich möchte gerne mir gerne ein Programm schreiben, was dem mplayer sagt das er alle x Sekunden einen Screenshot macht. Nur leider klappt das nur so halb.
Ich öffne den mplayer mit popen und sende die Befehle mit putc.
Das Problem ist aber das putc den Befehl erst absenden wenn ich die Verbindung zum Programm schließe mit pclose. Gibt es da eine Möglichkeit dem mplayer direkt ein "s" zu zusenden?
Hier mal mein Code:
PHP:
#include <stdio.h>
#include <string.h>

int main (void) {
	FILE *pipe;
	
	pipe = popen("mplayer tv:// -tv driver=v4l:width=640:height=480:device=/dev/video1 -vf screenshot", "w");
	do {
		sleep(2);
		putc(115, pipe);	// Sende "s"
		printf("SCREENSHOT \n");
	} while (1);
	pclose(pipe);
}
 
Hallo,

solange kein '\n' auf einen stream geschrieben wird oder er nicht via close(), pclose() respektive geschlossen wird, wird das was du in den stream reinschiebst gepuffert und nicht sofort rausgeschrieben. Versuchs mal so:

C:
#include <stdio.h>
#include <string.h>

int main (void) {
    FILE *pipe;
    
    pipe = popen("mplayer tv:// -tv driver=v4l:width=640:height=480:device=/dev/video1 -vf screenshot", "w");
    do {
        sleep(2);
        putc('s', pipe);
        fflush(pipe);
        printf("SCREENSHOT \n");
    } while (1);
    pclose(pipe);
}

Gruß,
RedWing
 
Zurück