Hier ist der Code:Warum fügt die ntimes keinen in Child-Prozess hinzu?
#include <signal.h>
#include <stdlib.h>
#include <stdio.h>
int ntimes = 0;
int main()
{
int pid,ppid;
int p_action(),c_action();
/* set parent process SIGUSR1 */
signal(SIGUSR1,p_action);
switch(pid=fork()){
case -1: /* fork failed */
perror("synchro");
exit(1);
case 0: /* child process mode */
/* set child process SIGUSR1 */
signal(SIGUSR1,c_action);
/* get parent process */
ppid = getppid();
for(;;){
sleep(1);
kill(ppid,SIGUSR1);
pause();
}
/* dead loop */
break;
default: /* parent process mode */
for(;;){
pause();
sleep(1);
kill(pid,SIGUSR1);
}
/* dead loop*/
}
return 0;
}
p_action()
{
printf("Parent caught signal #%d\n",++ntimes);
}
c_action()
{
printf("Child caught signal #%d\n",++ntimes);
}
Und der Ausgang ist:
Eltern gefangen Signal # 1 Kind gefangen Signal # 1 Eltern gefangen Signal # 2 Kind gefangen Signal # 2 Eltern gefangen Signal # 3 Kind gefangen Signal # 3 . . .
Warum die nTimes für Kind gleich der Eltern ist aber nicht ++ 1, wie Eltern-1, Kind-2, Eltern-3, Kind-4, ...
Thank you!
BTW, der Code wie gezeigt verwendet keine Schleife, so dass die Ausgabe, die Sie geben, von einer anderen Quelle erstellt wurde. – alk