Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103729763
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: LINUX

2008-04-18 12:59:27

     来源:赛迪网    作者:sixth

Fork创建一个新的进程,新创建的进程是子进程,它是对父进程以后代码的一个复制,通常用来做多进程的服务器,也可以在子进程中运行独立的代码。

用getpid可以判断当前是子进程还是父进程。

看下面这个例子:

#include 
#include 
#include 
int main()
{
pid_t pid;
static int n = 0;
printf("fork!\n");
switch (pid = fork())
{
case -1:
{
/* ..pid.-1.fork.... */
/* ........ */
/* .......... */
perror("The fork failed!");
break;
}
case 0:
{
/* pid.0.... */
printf("[child]i am child!\n");
printf("[child]getpid=[%d]\n", getpid() );
printf("[child]pid=[%d]\n", pid );
break;
}
default:
{
/* pid..0.... */
printf("[parent]i am parent!\n" );
printf("[parent]getpid=[%d]\n",getpid() );
printf("[parent]pid=[%d]\n",pid );
break;
}
}
printf("n=[%d]\n", n++);

return 0;
}

这个例子在linux下用gcc编译,运行结果如下:

fork!
[child]i am child!
[child]getpid=[7422]
[child]pid=[0]
n=[0]
[parent]i am parent!
[parent]getpid=[7421]
[parent]pid=[7422]
n=[0]
阅读(276) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~