Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1499356
  • 博文数量: 204
  • 博客积分: 4013
  • 博客等级: 中校
  • 技术积分: 4030
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-29 06:34
文章分类

全部博文(204)

文章存档

2012年(204)

分类: 嵌入式

2012-03-11 02:13:00

(1)fork()
    fork 函数用于从已存在进程中创建一个新进程。新进程称为子进程,而原进程称为父进程。这两个分别带回它们各自的返回值,其中父进程的返回值是子进程的进程号,而子进程则返回0。因此,可以通过返回值来判定该进程是父进程还是子进程。
   fork()函数
   头文件:#include
   格式:   pid_t  fork();
   返回值:0:子进程
          子进程ID(大于0的整数):父进程
          -1:出错
   子进程是父进程的拷贝,它具有和父进程相同的代码段,但是它具有自己的数据段和堆栈段。
   子进程将从父进程获得绝大部分属性,但也会更改部分属性的值,要更改的属性为:
   – 进程ID
   – 进程组ID(更改为父进程ID)
   –SESSION ID(为子进程的运行时间记录)
   – 所打开文件及文件的偏移量(父进程对文件的锁定)
/*fork.c*/
#include
#include
#include
#include
int main(void)
{
 pid_t result;
/*调用fork函数,其返回值为result*/
 result = fork();
/*通过result的值来判断fork函数的返回情况,首先进行出错处理*/
 if(result == -1)
 {
  perror("fork");
  exit;
 }
/*返回值为0代表子进程*/
 else if(result == 0)
 {
  printf("The  return  value  is  %d\nIn  child  process!!\nMy  PID  is%d\n",result,getpid());
 }
/*返回值大于0代表父进程*/
 else 
  {
  printf("The  return  value  is  %d\nIn  father  process!!\nMy  PID  is%d\n",result,getpid());
  }
  return 1;
}
编译源文件fork.c并在板子上运行
先在上位机编译源文件:
进入/nfs/project目录下
[root@localhost project]# arm-linux-gcc fork.c -o fork
将可执行程序下载到目标板上,运行结果如下所示:
阅读(1130) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~