fork函数使用随笔
2010-05-18 23:53
225 查看
最近在使用fork函数时,遇到了一些问题,最后通过实验,终于明白了fork的用法,现在分享一下我的
一些体会。
那么,首先看一段代码(fork.c):
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main ()
{
pid_t pid;
int count = 0;
pid = fork ();
if (pid != 0) {
printf ("我是孩儿他爹/n/n");
count += 1;
}
else {
printf ("我是我爹的儿子/n/n");
count += 1;
}
printf("统计结果是:%d/n", count);
return 0;
}
编译-- gcc fork.c -o fork
运行,结果如下:
我是我爹的儿子
统计结果是:1
我是孩儿他爹
统计结果是:1
从中我们可以看出,在执行了fork函数后,子进程首先执行,然后是父进程,同时通过计数器可以看出,
两个进程不共享内存区域(不共享count这个变量),形成了两个相对独立的进程。
那么,再来看下一个问题,代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main ()
{
int i;
for (i = 0; i < 1; i++) {
fork ();
printf ("+ ");
}
return 0;
}
这是一个for循环,很简单,每次打印一个“+”号,首先,赋值1给i,运行,结果为:
+ +
赋值2给i,运行,结果为:
+ + + + + +
...
通过统计,可以得出结论:
“+”号的总数为 = 2 * (0 + 1 + 2 ...)
可见,一次循环,产生两个进程,第二次是加倍,第三次再加倍...
可见fork能为我们源源不断的增加"人口“,再配合着exec家族,就能让linux的进程人丁兴旺了,当然,产生
新进程的方法还有system,但出于安全的考虑,fork和exec要好一些
一些体会。
那么,首先看一段代码(fork.c):
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main ()
{
pid_t pid;
int count = 0;
pid = fork ();
if (pid != 0) {
printf ("我是孩儿他爹/n/n");
count += 1;
}
else {
printf ("我是我爹的儿子/n/n");
count += 1;
}
printf("统计结果是:%d/n", count);
return 0;
}
编译-- gcc fork.c -o fork
运行,结果如下:
我是我爹的儿子
统计结果是:1
我是孩儿他爹
统计结果是:1
从中我们可以看出,在执行了fork函数后,子进程首先执行,然后是父进程,同时通过计数器可以看出,
两个进程不共享内存区域(不共享count这个变量),形成了两个相对独立的进程。
那么,再来看下一个问题,代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main ()
{
int i;
for (i = 0; i < 1; i++) {
fork ();
printf ("+ ");
}
return 0;
}
这是一个for循环,很简单,每次打印一个“+”号,首先,赋值1给i,运行,结果为:
+ +
赋值2给i,运行,结果为:
+ + + + + +
...
通过统计,可以得出结论:
“+”号的总数为 = 2 * (0 + 1 + 2 ...)
可见,一次循环,产生两个进程,第二次是加倍,第三次再加倍...
可见fork能为我们源源不断的增加"人口“,再配合着exec家族,就能让linux的进程人丁兴旺了,当然,产生
新进程的方法还有system,但出于安全的考虑,fork和exec要好一些
相关文章推荐
- fork函数使用随笔(转)
- linux系统如何使用fork函数创建子进程
- Unix Like的fork()函数使用
- fork函数的使用
- Linux系统编程:fork函数的使用【循环创建N个子线程】
- wait函数在fork创建子进程后的使用
- 创建进程 fork()函数的基本使用 父子进程之间的关系
- Linux下的fork(),exec()等函数的使用
- 创建进程fork()函数使用
- Linux下的多进程编程(转) - fork(),exec()等函数的使用[zz]
- 函数fork使用
- fork()函数的基本使用
- [Linux进程]使用fork函数创建进程
- 【Linux】嵌入式开发,在Linux中使用C语言对Fork函数执行子函数及父函数,命令ps 及 ls 操作
- Linux 环境下 fork 函数和 exec 函数族的使用
- Linux下的多进程编程——fork(),exec()等函数的使用
- fork函数的相关知识和使用
- 使用pipe()与fork()函数通过管道实现父子进程之间的通信
- wait函数在fork创建子进程后的使用
- linux中fork()和vfork()函数的使用和区别