博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux创建子进程--fork()方法
阅读量:6429 次
发布时间:2019-06-23

本文共 800 字,大约阅读时间需要 2 分钟。

(1)fork()的定义

fork()函数是Unix中派生新进程的唯一方法,声明如下:

 

  1. #include <unistd.h>  
  2.   
  3. pid_t fork(void);  

我们需要理解的是,调用一次fork()方法,该方法会返回两次。一次是在调用进程(也就是派生出的子进程的父进程)中返回一次,返回值是新派生的进程的进程ID。一次是在子进程中返回,返回值是0,代表当前进程为子进程。如果返回值为-1的话,则代表在派生新进程的过程中出错。

 

那么在程序中,我们就可以根据此返回值来判断当前进程是父进程还是子进程,来实现一些具体的操作。例如:

 

  1. int main()  
  2. {  
  3.     pid_t pid;  
  4.   
  5.     if((pid = fork()) = 0)  
  6.     {  
  7.         // TODO: 在子进程中实现具体操作  
  8.         // ...  
  9.         exit(0); // 结束子进程  
  10.     }  
  11.   
  12.     // TODO: 在调用进程(父进程)实现具体操作  
  13. }  

(2)fork()的实质过程

 

父进程中在调用fork()派生新进程,实际上相当于创建了进程的一个拷贝;即在fork()之前的进程拥有的资源会被复制到新的进程中去。网络服务器在处理并发请求时,也可以采取这种派生新进程的方式: 父进程调用accept()后调用fork()来处理每一个连接。那么,所接受的已连接的套接口随后就在父子进程中共享。通常来说,子进程会在这连接套接口中读和写操作,父进程则关闭这个已连的套接口(可以参考:)

(3)fork()的用法

fork()有两个典型用法:(1)一个进程进行自身的复制,这样每个副本可以独立的完成具体的操作,在多核处理器中可以并行处理数据。这也是网络服务器的其中一个典型用途,多进程处理多连接请求。 (2)一个进程想执行另一个程序。比如一个软件包含了两个程序,主程序想调起另一个程序的话,它就可以先调用fork来创建一个自身的拷贝,然后通过exec函数来替换成将要运行的新程序。

转载地址:http://manga.baihongyu.com/

你可能感兴趣的文章
使用Shell脚本查找程序对应的进程ID,并杀死进程
查看>>
201521123081《java程序设计》 第12周学习总结
查看>>
统计连续时间
查看>>
1、Monkey环境搭建
查看>>
通过cordova将vue项目打包为Android app
查看>>
一些分类方法的比较(转)
查看>>
典型的软件过程模型
查看>>
Gson如何解析key值是数字的json数据
查看>>
虚拟短信
查看>>
英文技术Podcast推荐 - 英语技术一起学
查看>>
linux ubuntu12.04 安装mysql
查看>>
理解实例、原型搜索顺序
查看>>
Laravel5.5 生成测试数据
查看>>
springboot整合mybatis及封装curd操作-配置文件
查看>>
express.static设置缓存
查看>>
MVC过滤器(执行顺序)
查看>>
Linux 学习 Eclipse美化,解决工具栏过大和 Javadoc背景色修改
查看>>
Java基础之String类
查看>>
Selenium +Chrome浏览器如何模拟手机操作
查看>>
在Mac OS里安装和升级Git
查看>>