0
ここではコードである:なぜntimesは子プロセスに1を追加しませんか?
#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);
}
出力がある:
親キャッチ信号#1 子供キャッチ信号#1 親キャッチ信号#2 子供がキャッチ信号#2 親キャッチ信号#3 チャイルド信号#3 が検出されました。 。 。
なぜ子供のためにntimesが
ありがとう...親-1、子供-2、親-3、子供-4、のように、++ 1親に同じではないです!
ここに示すコードはループを使用しないため、出力は他のソースによって作成されています。 – alk