【Linux】进程创建

news2024/11/25 22:27:48

文章目录

  • 进程创建
    • fork函数初识
    • fork函数返回值
    • 写时拷贝
    • fork常规用法
    • fork调用失败的原因

进程创建

fork函数初识

在linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。

include <unistd.h>  
pid_t fork(void);  
返回值:子进程中返回0,父进程返回子进程id,出错返回-1

进程调用fork,当控制转移到内核中的fork代码后,内核做:

  • 分配新的内存块和内核数据结构给子进程
  • 将父进程部分数据结构内容拷贝至子进程
  • 添加子进程到系统进程列表当中
  • fork返回,开始调度器调度
    ![[Pasted image 20221112085321.png]]

当一个进程调用fork之后,就有两个二进制代码相同的进程。而且它们都运行到相同的地方。但每个进程都将可以开始它们自己的旅程,看如下程序.

int main( void )  
{  
	pid_t pid;  
	printf("Before: pid is %d\n", getpid());
	if ( (pid=fork()) == -1 )perror("fork()"),exit(1);  
	printf("After:pid is %d, fork return %d\n", getpid(), pid);  
		sleep(1);  
	return 0;  
}  
运行结果:  
[root@localhost linux]# ./a.out  
Before: pid is 43676  
After:pid is 43676, fork return 43677  
After:pid is 43677, fork return 0

这里看到了三行输出,一行before,两行after。进程43676先打印before消息,然后它有打印after。另一个after消息有43677打印的。注意到进程43677没有打印before,为什么呢?如下图所示
![[Pasted image 20221112085424.png]]

所以,fork之前父进程独立执行,fork之后,父子两个执行流分别执行。注意,fork之后,谁先执行完全由调度器决定。

fork函数返回值

  • 子进程返回0,
  • 父进程返回的是子进程的pid

写时拷贝

通常,父子代码共享,父子再不写入时,数据也是共享的,当任意一方试图写入,便以写时拷贝的方式各自一份副本。具体见下图:
![[Pasted image 20221112085548.png]]

fork常规用法

一个父进程希望复制自己,使父子进程同时执行不同的代码段。例如,父进程等待客户端请求,生成子进程来处理请求。
一个进程要执行一个不同的程序。例如子进程从fork返回后,调用exec函数

fork调用失败的原因

  • 系统中有太多的进程
  • 实际用户的进程数超过了限制

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1162648.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【EI会议征稿】第三届电子信息工程、大数据与计算机技术国际学术会议(EIBDCT 2024)

第三届电子信息工程、大数据与计算机技术国际学术会议&#xff08;EIBDCT 2024&#xff09; 2024 3rd International Conference on Electronic Information Engineering, Big Data and Computer Technology 第三届电子信息工程、大数据与计算机技术国际学术会议&#xff08;…

PHP版本升级后,PHPExcel导出下载文件失败,白屏或ERR_INVALID_RESPONSE(网页暂时无法连接,或者它已永久性地移动到了新网址)

PHP版本升级后&#xff0c;PHPExcel导出下载文件失败&#xff0c;白屏或ERR_INVALID_RESPONSE&#xff08;网页暂时无法连接&#xff0c;或者它已永久性地移动到了新网址&#xff09; 这里因为PHP版本过高导致PHPExcel下载失败&#xff1b; 解决方法&#xff1a;打开 PHPExce…

分享一下商城小程序怎么做

随着移动互联网的普及&#xff0c;越来越多的用户开始使用商城小程序进行购物。商城小程序不仅方便快捷&#xff0c;还能享受更多的优惠和福利。本文将探讨如何打造一个成功的商城小程序&#xff0c;并分享一些实用的策略和案例。 了解用户需求是打造商城小程序的第一步。我们需…

利用云计算和微服务架构开发可扩展的同城外卖APP

如今&#xff0c;同城外卖APP已经成为了人们点餐的主要方式之一。然而&#xff0c;要构建一款成功的同城外卖APP&#xff0c;不仅需要满足用户的需求&#xff0c;还需要具备可扩展性&#xff0c;以适应快速增长的用户和订单量。 一、了解同城外卖APP的需求 在着手开发同城外卖…

FastDFS+Nginx搭建本地服务器并实现远程访问

文章目录 前言1. 本地搭建FastDFS文件系统1.1 环境安装1.2 安装libfastcommon1.3 安装FastDFS1.4 配置Tracker1.5 配置Storage1.6 测试上传下载1.7 与Nginx整合1.8 安装Nginx1.9 配置Nginx 2. 局域网测试访问FastDFS3. 安装cpolar内网穿透4. 配置公网访问地址5. 固定公网地址5.…

2.预备知识-3GPT版

#pic_center R 1 R_1 R1​ R 2 R^2 R2 目录 知识框架No.1 数据操作数据预处理一、N维数组样例二、创建数组三、访问元素四、数据操作D2L注意点五、数据预处理D2L注意点六、QA No.2 线性代数一、标量二、向量1、基本操作2、空间表示3、乘法 三、矩阵1、基本操作2、乘法3、空间表…

uniapp 微信小程ios端键盘弹起后导致页面无法滚动

项目业务逻辑和出现的问题整理 新增页面 用户可以主动添加输入文本框 添加多了就会导致当前页面出现滚动条,这就导致ios端滚动页面的时候去点击输入框键盘抬起再关闭的时候去滚动页面发现页面滚动不了(偶尔出现),经过多次测试发现是键盘抬起的时候 主动向上滑动 100%出现这种问…

[PyTorch][chapter 58][强化学习-2-有模型学习2]

前言&#xff1a; 前面我们讲了一下策略评估的原理,以及例子. 强化学习核心是找到最优的策略&#xff0c;这里 重点讲解两个知识点&#xff1a; 策略改进 策略迭代与值迭代 最后以下面环境E 为例&#xff0c;给出Python 代码 。 目录&#xff1a; 1&#xff1a; 策略改进 2&…

计算协方差

例如&#xff0c;有两组数据&#xff1a; 身高x&#xff08;厘米&#xff09; 体重y&#xff08;公斤&#xff09; 194 87 183 78 175 71 平均 184 78.7 现在要计算x和y的协方差。 手工计算 用excel计算 ​​​​​​​

Security ❀ HTTP协议常见DOS攻击详解

文章目录 1. 协议基础概述2. HTTP协议报文2.1 HTTP Request 请求包2.2 HTTP Response 应答包 3. HTTP GET Flood3.1. 攻击原理3.2. 防护方法 4. HTTP POST Flood4.1. 攻击原理4.2. 防护方法 5. 慢速CC攻击5.1. 攻击原理5.2. 防护方法 6. 总结 1. 协议基础概述 HTTP - HyperTex…

解决Hbulider 按F11不能退出免打扰模式

原因&#xff1a;F11快捷键并不是退出免打扰模式&#xff0c;需要覆盖配置 右侧如下图&#x1f447; [{"key":"ctrlf11","command":"workbench.action.distanceFreeMode"} ]

WheatA 轻量级生态数据软件

无论是在工作还是上学期间&#xff0c;大家想要做一个科研项目或者市场调查时&#xff0c;往往需要大量的数据用于分析总结&#xff0c;这时获得优质的数据就显得额外重要&#xff0c;数据的优劣往往决定了项目结果的好坏。数据来源的主要渠道主要有两种&#xff1a;无非是去数…

CTF-Reverse---VM虚拟机逆向[HGAME 2023 week4]vm题目复现【详解】

文章目录 前言0x1[HGAME 2023 week4]vm提取汇编指令mov指令push指令&pop指令运算操作cmp指令jmp指令je 和 jne exp 前言 没有前言。终于搞定第二题了。费劲是真的费。 题目在nssctf上有。 这一题写完才看到有提示&#xff0c;是关于构建结构体的&#xff0c;下次试试。 0x…

LiveNVR监控流媒体平台局域网Onvif/RTSP/SDK等方式接入监控视频后转GB28181/GB35114级联输出,上级平台无法播放如何抓包分析

1、第一步&#xff1a;抓包工具准备 1.1、Linux 使用 tcpdump 进行抓包&#xff0c;如果系统无此命令&#xff0c;自行安装 1.2、windows 下载安装 wireshark 进行抓包 2、第二步&#xff1a;找到上级平台ip 在基础配置里面GB28181级联配置中SIP服务IP 3、第三步&#…

重新理解B面供应链:在轻创业的潮流里

中国新式供应链正在成型。 在这个由于年轻的消费需求驱动的想法、AI大模型能力、严苛清晰的供应链、工厂图谱一共构成的链条上&#xff0c;越来越多的新创业和新产业模型都正在被加速成型&#xff0c;并真实转化为新的工业生产力。 作者|史圣园 编辑|皮爷 出品|产业家 …

Android 控件背景实现发光效果

主要实现的那种光晕效果&#xff1a;中间亮&#xff0c;四周逐渐变淡的。 这边有三种发光效果&#xff0c;先上效果图。 第一种、圆形发光体 实现代码&#xff1a;新建shape_light.xml&#xff0c;导入以下代码。使用时&#xff0c;直接给view设置为background。 <?xml …

IT开发怕失败?买个低代码搭建属于自己应用

目录 一、驱动低代码流行的主要几个特性 01、低代码缩短了开发时间 02、低代码允许平滑协作 03、低代码在云端和本地都可运行 二、低代码究竟好不好用 三、源码全交付的开发平台 01、高性能、高拓展 02、功能丰富&#xff0c;满足通用场景 03、私有化部署 04、部署方式 05、多数…

PFMEA详解结构分析——Sun FMEA软件

FMEA从1949年诞生到今天已经发生过多次更新&#xff0c;最新版本是2019年6月发布的《AIAG VDA FMEA手册》。新手册借鉴了AIAG的方框图、参数图、流程图等工具的运用&#xff0c;也借鉴了VDA的五步过程导向法&#xff0c;并在此基础上头尾各增加一步&#xff0c;形成了FMEA七步法…

【强化学习】14 —— A3C(Asynchronous Advantage Actor Critic)

A3C算法&#xff08; Asynchronous Methods for Deep Reinforcement Learning&#xff09;于2016年被谷歌DeepMind团队提出。A3C是一种非常有效的深度强化学习算法&#xff0c;在围棋、星际争霸等复杂任务上已经取得了很好的效果。接下来&#xff0c;我们先从A3C的名称入手&…

视频号的视频怎么保存到相册,第三方工具快速下载保存!

视频号是目前非常火爆的短视频平台之一&#xff0c;许多用户在上面发布了各种精彩的视频内容。然而&#xff0c;很多人都想把视频保存到自己的相册中&#xff0c;以便随时欣赏和分享。那么&#xff0c;如何将视频号的视频保存到相册呢&#xff1f; 我们需要了解一个专注于视频…