Linux 父進程發送信號殺死子進程


 

 

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <signal.h>
#include <unistd.h>
void handler(int arg) { printf("receive SIGCHLD\n"); } int main(int argc, const char *argv[]) { signal(SIGCHLD,handler); //注冊信號回調函數,當信號發生會調用handler pid_t pid; pid = fork(); if(pid < 0) { perror("fork fail "); exit(1); } else if(pid == 0) //子進程 { while(1) { printf("child \n"); sleep(1); } } else //父進程 { sleep(1); //睡 1 秒 kill(pid,SIGKILL);//殺死 pid 發送進程的信號,kill 給其他進程發送信號,指定進程號 printf("child killed\n"); printf("father \n"); wait(NULL); //等待回收子進程的資源 raise(SIGKILL); //殺死自己的信號,函數raise 給自己發送信號 } return 0; }

 測試:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM