1.练习:在一个孤儿进程中创建十个僵尸进程
2015-04-23 15:10
316 查看
一个僵尸进程是在父进程有机会用wait或waitpid收集它退出状态之前就终止的进程。
子所以被称为僵尸进程是因为进程虽然结束了,但依然在进程表中存在。
子进程退出后分配给它的内存和资源都被释放,但它还是在内核进程表中保留一条记录,内核在父进程回收子进程的退出状态前一直保留它。
当进程表中进程条目太多时,会影响性能,导致创建进程失败,系统崩溃等。
fork或者exec函数创建了一个新进程,为了收集新进程的退出状态防止出现僵死进程(zombie process), 父进程应该调用waitpid等待子进程的终止,或者父进程退出,僵死进程也会被销毁掉。
代码中
当 i = n 则有 n个僵尸进程, 且它们的父进程ip都是 pid 因为,pid 的为子进程在创建之初就已经执行exit(0)所以即使是含有fork的循环中, 子进程也不会去创建新的子进程。
子所以被称为僵尸进程是因为进程虽然结束了,但依然在进程表中存在。
子进程退出后分配给它的内存和资源都被释放,但它还是在内核进程表中保留一条记录,内核在父进程回收子进程的退出状态前一直保留它。
当进程表中进程条目太多时,会影响性能,导致创建进程失败,系统崩溃等。
fork或者exec函数创建了一个新进程,为了收集新进程的退出状态防止出现僵死进程(zombie process), 父进程应该调用waitpid等待子进程的终止,或者父进程退出,僵死进程也会被销毁掉。
代码中
当 i = n 则有 n个僵尸进程, 且它们的父进程ip都是 pid 因为,pid 的为子进程在创建之初就已经执行exit(0)所以即使是含有fork的循环中, 子进程也不会去创建新的子进程。
#include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <string.h> #include <errno.h> #include <unistd.h> int main(void) { pid_t pid = fork(); if(pid == 0) { int i = 0; for(i = 0; i<10; i++) { pid_t pid = fork(); if(!pid) { exit(0); } } pause(); } else exit(0); return EXIT_SUCCESS; }
相关文章推荐
- 编写一个孤儿进程,这个孤儿进程可以同时创建100个僵死进程
- Linux 孤儿、僵尸、服务进程创建
- Linux:进程创建与僵尸孤儿进程
- 系统编程之进程的创建.僵尸与孤儿进程
- Linux编写一个孤儿进程,这个孤儿进程可以同时创建100个僵死进程。
- 编写一个孤儿进程,这个进程可以同时创建100僵尸进程
- 分析Linux内核创建一个新进程的过程
- python:Process、join()、进程的创建Process子类、进程池Pool、将一个文件夹的内容copy到另一个文件夹
- 一个进程可以创建多少线程?
- Linux系统如何创建一个新进程
- UNIX环境编程----编程实例---创建一个子进程并建立一个新的会话
- 详解僵尸进程与孤儿进程
- Linux内核创建一个新进程的过程
- 实战COM(03)----创建一个进程外组件
- 开源html5_kiwiJs_基础练习_创建一个kiwijs游戏
- 一个进程最多可以创建线程的数目
- 进程——孤儿进程与僵尸进程
- 僵尸进程和孤儿进程
- 孤儿进程与僵尸进程
- 僵尸进程 与 孤儿进程