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。