易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux多进程相关内容

Linux多进程相关内容
版权声明:可以任意转载,但转载时必须标明原作者charlee、原始链接http://tech.idv2.com/2006/10/14/linux-multiprocess-info/以及本声明。
最近在用 perl 写一个Linux下的多进程守护进程,因此研究了一下Linux下的进程相关的知识。现将心得总结一下。主要是关于进程创建和回收。
fork
SIGCHLD信号和僵尸进程
利用 waitpid 回收僵尸进程
忽略 SIGCHLD 回收僵尸进程
fork
首先说说 fork
函数。这个函数用来创建一个进程,不过创建方法有些不太好理解。先看下面的程序
fork-test.pl。我是用perl写的,不过相同的功能也可以用 C 来完成。
#!/usr/bin/perl
#------------------------------------
# fork-test.pl
print "Program started, pid=$$.\n";
if ($child_pid = fork()) {
print "I'm parent, my pid=$$, child's pid=$child_pid.\n";
} else {
print "I'm child, pid=$$.\n";
}
运行之后显示下面的结果。
Program started, pid=8934.
I'm child, pid=8935.
I'm parent, my pid=8934, child's pid=8935.
为什么 I'm child 和 I'm parent 都会被显示?这是因为 fork 调用时,当前的进程会从 fork 的位置一分为二,fork
对两个进程的返回值不同。在父进程中 fork 返回子进程(即另一个进程)的进程id,而在子进程中 fork 返回 0。上例的执行过程如下图。
上例中执行到 Program started 时,只有一个进程 8934,而执行到 fork 时,进程分为两个,父进程为 8934,子进程为
8935。接下来父进程执行 if 分支,输入“I'm parent..”,而子进程执行 else 分支,输出 “I'm child”。
SIGCHLD信号和僵尸进程
首先说说什么是僵尸进程(zombie process)。我们知道 Linux
使用进程表来管理进程,每个进程都在进程表中占据一个位置。当我们用 fork
生成一个子进程,然后该子进程退出时,系统不会自动回收该子进程所占位置。此时虽然进程表中有这个子进程的信息,但实际上该子进程早已结束,于是这个进程就成了“僵尸进程”。
僵尸进程虽然不占用系统资源,但是它会浪费进程表的位置。如果僵尸进程太多,有可能会导致不能创建新进程。下面的例子 zombie-test.pl
演示了如何创建僵尸进程:
#!/usr/bin/perl
#------------------------------------
# zombie-test.pl
sub child {
print "I'm child, pid=$$.\n";
}
while (1) {
if (fork() == 0) {


相关文档:

Linux iptable文档

总览
用iptables -ADC 来指定链的规

,-A添加 -D删除 -C 修改
iptables - [RI] chain rule num rule-specification[option]
用iptables - RI 通过规则的顺序指定
iptables -D chain rule num[option]
删除指定规则
iptables -[LFZ] [chain][option]
用iptables -LFZ 链名 [选项]
iptables -[NX] chain
用 -NX ......

Why do We Choose Linux?

Linux, named after the inventor, Linus Torvalds, is a so different OS for everyone against Windows. To everyone who used to use Windows, Linux need us to do more for everything which we usually do by computer, such as playing a video.
Someone says, Linux is for the ones who are good at the computer ......

用Linux构建最好的FTP服务器

在众多网络应用中,FTP(文件传输协议)有着非常重要的地位。Internet中一个十分重
要的资源就是软件资源,而各种各样的软件资源大多数都放在FTP服务器中。与大多数
Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户
机程序,连接到主机上的FTP服务器程序。用户通过客户机程序向服务器程 ......

Linux 杂记(一)

车水马龙,乱记点东西。
一开始不让我编译内核,结果是下面的问题导致:
1. sudo --- 拿root身份执行
2. apt-cache search ncurse --- 扫描所有带ncurse的资源
3. apt-get install libX-dev --- 安装开发用的lib库
4. cp -r --- 全面镜像复制
5. bz2 --- 压缩 tar jcvf 解压 tar jxvf
6. Ubuntu 生成 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号