Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1038260
  • 博文数量: 836
  • 博客积分: 43880
  • 博客等级: 大将
  • 技术积分: 5485
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-20 17:36
文章分类

全部博文(836)

文章存档

2011年(1)

2008年(835)

我的朋友

分类: LINUX

2008-08-20 18:20:09


Fork创建一个新的进程,新创建的进程是子进程,它是对父进程以后代码的一个复制,通常用来做多进程的服务器,也可以在子进程中运行独立的代码。 用getpid可以判断当前是子进程还是父进程。 看下面这个例子:
#include
#include
#include
intmain()
{
pid_tpid;
staticintn=0;
printf("fork!\n");
switch(pid=fork())
{
case-1:
{
/*..pid.-1.fork....*/
/*........*/
/*..........*/
perror("Theforkfailed!");
break;
}
case0:
{
/*pid.0....*/
printf("[child]iamchild!\n");
printf("[child]getpid=[%d]\n",getpid());
printf("[child]pid=[%d]\n",pid);
break;
}
default:
{
/*pid..0....*/
printf("[parent]iamparent!\n");
printf("[parent]getpid=[%d]\n",getpid());
printf("[parent]pid=[%d]\n",pid);
break;
}
}
printf("n=[%d]\n",n  );

return0;
}
这个例子在linux下用gcc编译,运行结果如下:
fork!
[child]iamchild!
[child]getpid=[7422]
[child]pid=[0]
n=[0]
[parent]iamparent!
[parent]getpid=[7421]
[parent]pid=[7422]
n=[0]
(责任编辑:云子)


下载本文示例代码
阅读(327) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~