signale und ipc
-
hallo,
ich betrete gerade neuland in sachen ipc (inter process communication).
ich hab ein programm geschrieben, das einen child-prozess erstellt, der eine audiodatei abspielt. nun möchte ich vom parent-prozess signale an den child-prozess senden. zb. ein signal, das das abspielen der audiodatei pausiert etc.void sighand() { signal(SIGUSR1,&sighand); //Code zum Setzen eines globalen Flags etc. }
mittels kill kann ich nun das signal SIGUSR1 an einen prozess senden, der dann den signal-handler ausführt.
mein problem ist, dass der child-prozess zum emfpang von signalen pause() aufrufen muss, was den ganzen prozess blockiert und das abspielen der audiodatei unterbricht.gibt es eine möglichkeit auf pause, bzw. sigsuspend zu verzichten und trotzdem signale zu empfangen?
vielen dank & gruß, marco.
-
Signale bekommst du, auch wenn du nicht mit pause() wartest. Du kannst es eventuell so machen:
static const int Halted = 0; static const int Playing = 1; static const int Pausing = 2; volatile sig_atomic_t status; void signal_handler() { //auswerten und status setzen } //Main loop while (status == Playing) { //spiele sound }