Linux系统编程——孤儿进程模拟及分析
生活随笔
收集整理的這篇文章主要介紹了
Linux系统编程——孤儿进程模拟及分析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
孤兒進程介紹
父進程先于子進程結束,則子進程成為孤兒進程,子進程的父進程成為init進程,稱為init進程領養孤兒進程。孤兒進程就是父進程先死亡,子進程成為孤兒進了孤兒院了。
孤兒進程模擬
代碼展示
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <fcntl.h> #include <error.h> #include <sys/errno.h>void perr(const char* str) {perror(str);exit(1); } //驗證孤兒進程 int main(int argc,char* argv[]) {pid_t pid;if( (pid = fork()) == 0 ) //子進程{printf("i am child process,pid = %d,ppid = %d,i sleep 5s.\n",getpid(),getppid());sleep(5);printf("now,i am orphan process,pid %d,ppid = %d.\n",getpid(),getppid());exit(0);}else if( pid > 0 ) //父進程{printf("i am parent process,pid = %d,ppid = %d.\n",getpid(),getppid());sleep(1);printf("parent process exit\n");}else if( pid < 0 ){perr("fork error");}return 0; }運行效果
孤兒進程分析
從代碼運行效果可以看出父進程先死亡,子進程成為孤兒進程后,父進程變為pid = 1的init進程。由于父進程的父進程是bash進程,父進程執行完畢,回到bash調用回到控制臺終端,此時孤兒進程還活著,5秒后要進行打印操作所以將輸出打印到屏幕,所以bash的光標沒有在$的后面。
總結
以上是生活随笔為你收集整理的Linux系统编程——孤儿进程模拟及分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Shell脚本编程:使用shell打印九
- 下一篇: 十五、段前缀