对fork函数的体会

  进程的创建
创建一个进程的系统调用很简单.我们只要调用fork函数就可以了
.
#i nclude <unistd.h>

pid_t fork();
当一个进程调用了fork以后,系统会创建一个子进程.这个子进程和父进程不同的地方只
有它的进程ID和父进程ID,其他的都是一样.就象父进程克隆(clone)自己一样.当然创建 两个一模一样的进程是没有意义的.为了区分父进程和子进程,我们必须跟踪fork的返回 . fork掉用失败的时候(内存不足或者是用户的最大进程数已到)fork返回-1,否则 fork的返回值有重要的作用.对于父进程fork返回子进程的ID,而对于fork子进程返回0. 们就是根据这个返回值来区分父子进程的.
   父进程为什么要创建子进程呢
?前面我们已经
说过了Linux是一个多用户操作系统,在同一时间会有许多的用户在争夺系统的资源,重要的是进程是可以并发执行。有时 进程为了早一点完成任务就创建子进程来争夺资源. 一旦子进程被创建,父子进程一起从 fork处继续执行,相互竞争系统的资源.有时候我们希望子进程继续执行,而父进程阻塞,直 到子进程完成任务.这个时候我们可以调用wait或者waitpid系统调用 .如下例所示:
#include<stdio.h>
#include<stdlib.h>
#include<usistd.h>
#include<sys/types.h>
int main()
{
  pid_t pid;/*pid_t其实就是一个int类型*/

pid=fork();
  printf("Input the stream when childps &&parentps/n");
  if(pid)
 {
     printf("The chileprocess is running now!/n");
     printf("The pid is :%d/n",pid);

 }
else
 {
  printf("The parentprocess is running now!/n");
  printf("The pid is :%d/n",pid);

 }
return 0;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值