对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;

使用决策树算法对测试数据进行分类实战

-
  • 1970年01月01日 08:00

fork函数和wait/waitpid函数

复制一个进程映象fork 使用fork函数得到的子进程从父进程的继承了整个进程的地址空间,包括:进程上下文、进程堆栈、内存信息、打开的文件描述符、信号控制设置、进程优先级、进程组号、当前工作目录、根...
  • qq_25048473
  • qq_25048473
  • 2016-12-04 13:10:47
  • 119

关于fork函数的使用问题

关于fork函数和进程调度的讨论
  • aotony_1988
  • aotony_1988
  • 2016-04-16 12:13:12
  • 442

linux fork 函数目的

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

找bug的体会

这两周都在找bug,虽然找出了两个bug,但都不能算是独立解决的,没有成就感阿!!!在今后一定要注意几点:1、对于出问题的情况要收集足够的log,最好能从中分析出共性,这是解决bug的入手点2、在发现...
  • dishening7
  • dishening7
  • 2007-09-11 18:35:00
  • 768

Linux中fork函数分析

1、fork简介一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进...
  • will130
  • will130
  • 2016-04-04 12:33:00
  • 944

对fork函数理解

头文件: #include  pid_t fork (void); 1. 创建一个子进程,失败返回-1。 2. 调用一次,返回两次。分别在父子进程中返回子进程的PID和0。利用返回值的不同,可以分别为...
  • meetings
  • meetings
  • 2015-07-29 11:05:51
  • 987

linux C fork函数

创建新进程:fork函数1.1.1. fork函数干什么?     #include      #include      pid_t fork(void);      ‘fork()’函数用于从已存...
  • wesleyluo
  • wesleyluo
  • 2010-05-18 14:19:00
  • 4070

深入理解Linux的fork函数

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

fork函数的注意点

fork函数时unix下的以自身进程创建子进程的系统调用,一次调用两次返回,返回为0的是子进程,大于0的是父进程。注意 在fork调用出,父进程的空间会被原模原样的复制到子进程中,包括指令,变量值,程...
  • u013246898
  • u013246898
  • 2016-08-13 16:12:52
  • 215
收藏助手
不良信息举报
您举报文章:对fork函数的体会
举报原因:
原因补充:

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