kill(pid,SIGTERM) 终止子进程,尽管 pid 是父进程
kill(pid,SIGTERM) terminates child process, although pid is of parent
我正在学习进程分配。
以此代码块为例:
int main(){
pid_t pid = fork();
if(pid == 0){
while(1)
printf("Child ");
} else {
for(int i = 0; i<1000;i++)
printf("Parent ");
kill(pid,SIGTERM);
printf("\n%d \n ", pid);
}
}
pid = 0
是子进程,pid > 0
是父进程。 kill(pid,SIGTERM)
由父级用它自己的 pid
执行,但它杀死了子级而不是它自己。为什么?
正如@Siguza 在评论中提到的,您应该re-read fork
的文档。 fork
returns 正值 pid
到 parent 进程。该值是 child 进程的 PID。因此,kill(pid, SIGTERM)
将信号发送到 child 而不是 parent。
我正在学习进程分配。
以此代码块为例:
int main(){
pid_t pid = fork();
if(pid == 0){
while(1)
printf("Child ");
} else {
for(int i = 0; i<1000;i++)
printf("Parent ");
kill(pid,SIGTERM);
printf("\n%d \n ", pid);
}
}
pid = 0
是子进程,pid > 0
是父进程。 kill(pid,SIGTERM)
由父级用它自己的 pid
执行,但它杀死了子级而不是它自己。为什么?
正如@Siguza 在评论中提到的,您应该re-read fork
的文档。 fork
returns 正值 pid
到 parent 进程。该值是 child 进程的 PID。因此,kill(pid, SIGTERM)
将信号发送到 child 而不是 parent。