【Linux】孤儿进程&僵尸进程
孤儿进程
父进程先死,子进程托孤给一号进程
#include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(void) { pid_t pid; pid = fork(); if(-1 == pid) { return 0; } if(0 == pid) { sleep(100); } if(pid > 0) { ; } return 0; }
僵死进程
子进程先死,父进程还没有来得及收尸
#include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(void) { pid_t pid; pid = fork(); if(-1 == pid) { return 0; } if(0 == pid) { } if(pid > 0) { sleep(100); } return 0; }
避免僵死进程
创建子进程的时候可以不管子进程,让Linux内核去管
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <signal.h> int main(void) { pid_t pid; pid = fork(); // 通过信号注册函数,忽略子进程死的信号 signal(SIGCHLD, SIG_IGN); if(-1 == pid) { return 0; } if(0 == pid) { } if(pid > 0) { sleep(100); } return 0; }
当父子进程共享文件描述符情况
两个fd指向同一块内存
因为两个进程共享了文件指针偏移量,所以都能向文件中写数据
信号:异步处理事件,是一种机制
我们的程序在顺序执行的同时,能支持异步的调用信号处理函数
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。