- 论坛徽章:
- 0
|
我在unix sco5.05操作系统下编写的一段简单程序,但是执行结果让我很困惑,请指点:
#include <signal.h>;
main()
{
pid_t pid;
void (*signal())();
int sig_child();
signal(SIGUSR1,sig_child);
if((pid=fork())==0)
printf("child,pid[%d],ppid[%d]\n",getpid(),getppid());
else
kill(pid,SIGUSR1);
}
sig_child()
{
printf("success\n" ;
return(0);
}
用 cc aa.c 编译没报错;
执行a.out 结果为:child ,pid[1907],ppid[1906]
如果把kill(pid,SIGUSR1) 改为kill(getpid(),SIGUSR1),并且在父进程中打印
printf("childpid[%d]\n",pid);
程序的执行结果为:child,pid[1911],ppid[1910]
childpid[1911]
success
为什么?  |
|