forbomb
2015-05-02 15:21
260 查看
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <unistd.h> int main() { pid_t pid = 0; //进程ID printf("Start to begin fork.\n"); for (;;) { pid = fork(); if (pid < 0) { printf("Failed to fork child process.\n"); } else if (pid = 0) { printf("Succeed to fork child[%d] process.\n", getpid()); } } return 0; }
代码如上,这个函数一开始会去fork一个子进程,子进程如果fork成功会打印一句话,然后。。。。。。
然后子进程也会重新从for函数重新循环,继续去fork,这样子子孙孙无穷尽了,就会造成资源被消耗尽了。
可以在shell中将编译出来的进程试运行一下./进程名,就可以看见运行的状态的,这个时候如果想退出,可以直接ctrl+c来退出,但是如果是./进程名&,这个时候进程在后台运行,你就只能重启了。
百度百科里有fork炸弹的说明,有一个最简单的;(){ :|:& };:的fork炸弹,挺有意思的,有兴趣的可以了解一下。
相关文章推荐
- Linux下GPIO驱动详解文章
- Linux下编译fortran程序_基本菜鸟版
- uboot环境变量与内核MTD分区关系
- 开博总言
- Linux信号深度解剖
- linux编程---网络编程之复用I/O模型
- 如何在 Linux (Ubuntu) 下搭建C/C++ 开发环境
- gdb基本命令
- linux中who的实现
- nice和renice命令
- umask的使用
- F_GETLK与F_SETLK的使用
- linux编程系统调用link详解
- linux编程--将十六进制数据输出到指定文件里
- Linux进程间通信
- 跨平台C++程序开发经验小结
- linux下的c/c++开发开山篇
- linux下的C语言开发(makefile编写)
- linux下的C语言开发(AT&T 汇编语言)