对fork函数的体会

原创 2007年10月13日 20:51:00
  进程的创建
创建一个进程的系统调用很简单.我们只要调用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;

fork()创建子进程步骤、函数用法及常见考点(内附fork()过程图)

一个现有进程可以调用fork函数创建一个新的进程。 #include《unistd.h> pid_t fork(void);                    返回值:子进程中返回0,父进程...
  • yangcs2009
  • yangcs2009
  • 2014年09月14日 09:44
  • 7746

linux--fork()函数详解及底层实现机制

linux中fork()函数详解 (转载)    一、fork入门知识      一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程...
  • DianaCody
  • DianaCody
  • 2014年03月28日 14:47
  • 2574

linux fork 函数目的

fork 函数透析 简单的使用fork函数也许是再简单不过吧! 开始思考,fork函数到底有什么作用,何时使用这个函数呢?这是我将透析fork的原因。   fork函数基本知识 fork函数...
  • u010236550
  • u010236550
  • 2014年04月01日 15:33
  • 1535

深入理解Linux的fork函数

一、问题引入     工作期间,某系统设计师抛出如下一个问题,下面的代码,输出几个“-”?: [cpp] view plaincopyprint? /*******************...
  • thomashtq
  • thomashtq
  • 2015年04月14日 08:08
  • 1085

fork函数的2个返回值说明

fork简介: fork英文原意是“分岔,分支”的意思,而在操作系统中,乃是著名的Unix(或类Unix,如Linux,Minix)中用于创建子进程的系统调用。 【NOTE1】 fork ()...
  • dongzichen2015
  • dongzichen2015
  • 2016年12月05日 10:48
  • 840

【Linux】关于理解fork()函数的简单例子

1.fork()函数fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,这个新产生的进程称为子进程。一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然...
  • ww1473345713
  • ww1473345713
  • 2016年06月19日 00:13
  • 4775

关于fork函数的使用问题

关于fork函数和进程调度的讨论
  • aotony_1988
  • aotony_1988
  • 2016年04月16日 12:13
  • 407

fork()函数的基本用法

在Linux 中,创建一个新进程的唯一方法是有某个已存在的进程调用fork()函数,被创建的新进程称为子进程,已存在的进程称为父进程. 1.fork()函数 fork()函数的实质是一个系统调...
  • Chen_dSir
  • Chen_dSir
  • 2016年10月25日 22:36
  • 3252

操作系统 之 fork 函数 概念篇

由fork创建的新进程被称为子进程(child process)。该函数被调用一次,但返回两次。两次返回的区别是子进程的返回值是0,而父进程的返回值则是新进程(子进程)的进程 id。将子进程id返回给...
  • u013630349
  • u013630349
  • 2015年09月07日 22:17
  • 811

fork函数详解(fork就是分叉的意思, 很形象)

转载地址: http://blog.sina.com.cn/s/blog_7582409f0100v6cp.html
  • stpeace
  • stpeace
  • 2014年08月24日 23:56
  • 3128
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:对fork函数的体会
举报原因:
原因补充:

(最多只允许输入30个字)