Signalbehandlung: Signal von Child1 -> Child2
-
Hallo liebes Forun,
ich habe gerade ein paar Probleme bei folgendem Programm...
Es soll im Parent ein Child eingerichtet werden, welches einen beliebigen (externen) Programmcode aufruft - soweit kein Thema. Danach soll ein zweites Child erzeugt werden, in welchem ein Signal eingelesen wird und an Child1 gesendet werden soll. Das soll alles über execv() geschehen.Was ich bisher (in gekürzter Form) habe:
/* main.c */ pid_t pid1, pid2; char* params1[] = { "ext_prog-a", "param1", "param2", NULL }; char* params2[] = { "ext_prog-b", "param1", "param2", NULL }; pid1 = fork(); switch( pid1 ) { case 0: execv( *params1, params1 ); perror( "Child1:" ); exit( 1 ); default: pid2 = fork(); switch( pid2 ) { case 0: execv( *params2, params2 ); perror( "Child2:" ); exit( 1 ); } }
Um im Child2 ein Signal an Child1 zu senden, brauch ich doch die PID des Child1 und muss diese mit als Parameter beim execv() übergeben, oder? Wie kann ich die aber speichern? Im ersten "case 0" könnte ich sie zwar abfragen, ist ja aber im zweiten "case 0" nicht gültig und hat wilkürliche Werte gespeichert.
Weiß jemand Rat? Vielen Dank für eure grauen Zellen
-
Probier mal mit sigvec( ) und sigsetmask( ). Wahrscheinlich brauchst danach noch wait( ) und die passende dazu WAIT makros im Child1.