Linux C语言 进程详解——fork()/wait()/waitpid()

一、fork()函数

1. 头文件
#include<unistd.h>
#include<sys/types.h>
  • 2. 函数原型及功能介绍
函数原型pid_t fork( void);(pid_t 是一个宏定义,其实质是int 被定义在#includesys/types.h>中)返回值:若成功调用一次则返回两个值,子进程返回0,父进程返回子进程ID;否则,出错返回-1

fork系统调用用于创建一个新进程,称为子进程,它与父进程 同时运行(并发),且运行顺序不定(异步)
fork()函数如果成功调用一次返回两个值,一共可能有三种不同的返回值:

(1)在父进程中,fork返回新创建子进程的进程ID;
(2)在子进程中,fork返回0;
(3)如果出现错误,fork返回一个负值。

3.1 测试代码
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
int main()
{pid_t child;child = fork();if(child == 0)//子进程抢到处理机资源并运行{//子进程运行代码for(int i = 0; i < 3; i++){printf("I am child!\n");sleep(1);}}else if(child > 0)//父进程抢到处理机资源并运行{//父进程运行代码for(int i = 0; i < 3; i++){printf("I am parent!\n");sleep(1);}}return 0;
}
3.2 测试结果

父进程与子进程并发运行,且运行顺

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

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

相关文章

Redis应用高频面试题

Redis 作为一个高性能的分布式缓存系统,广泛应用于后端开发中,因此在后端研发面试中,关于 Redis 的问题十分常见。 本文整理了30个常见的 Redis 面试题目,涵盖了 Redis 的源码、数据结构、原理、集群模式等方面的知识,并附上简要的回答,帮助大家更好地准备相关的面试。 …

2024 复健记

2024 复健记 OI生涯结束两年了&#xff08;六年OI一场空&#xff0c;梦里花落知多少&#xff09; 这两天闲着无事翻了翻自己的CSDN&#xff0c;发现上一篇文章已经是两年之前了。那时候退役&#xff0c;虽然不知道梦应归于何处&#xff0c;但依旧梦里栩然蝴蝶、一身轻。如今忆…

独孤思维:图书电商做亏本了怎么弥补

01 昨天有个人问我&#xff0c;我做cps拉新。 拉了多少人&#xff0c;奖励了我免费星球的名额。 这个是博主个人行为&#xff0c;而且也是阶段性奖励&#xff0c;现在没有了。 其实这些都不是关键。 很多人喜欢问一些无聊的问题&#xff0c;只想要结果。 却从来不去探究自…

2024年【N2观光车和观光列车司机】及N2观光车和观光列车司机模拟考试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 N2观光车和观光列车司机考前必练&#xff01;安全生产模拟考试一点通每个月更新N2观光车和观光列车司机模拟考试题题目及答案&#xff01;多做几遍&#xff0c;其实通过N2观光车和观光列车司机操作证考试很简单。 1、…

LabVIEW提高开发效率技巧----用户权限控制

在LabVIEW开发中&#xff0c;用户权限控制是一个重要的设计模块&#xff0c;尤其在多用户系统中&#xff0c;它可以确保数据安全并控制不同用户的操作权限。为了实现用户权限控制&#xff0c;可以通过角色与权限管理模块来进行设计和实施。以下将从多个角度详细说明如何在LabVI…

Sentinel 快速入门

前置推荐阅读:Sentinel 介绍-CSDN博客 前置推荐阅读&#xff1a;Nacos快速入门-CSDN博客 快速开始 欢迎来到 Sentinel 的世界&#xff01;这篇新手指南将指引您快速入门 Sentinel。 Sentinel 的使用可以分为两个部分: 核心库&#xff08;Java 客户端&#xff09;&#xff1a…

定义ftrace TRACE_EVENT事件

定义一个TRACE_EVENT事件&#xff0c;通过调用ATRACE_BEGIN和ATRACE_END实现函数的跟跟踪 #include <linux/trace_events.h> TRACE_EVENT(tracing_mark_write, TP_PROTO(int pid, const char *name, bool trace_begin), TP_ARGS(pid, name, trace_begin), …

新版vs code + Vue高亮、语法自动补全插件

vs code 版本或及以上 安装以下三个插件插件 Vetur Vue语法支持。包括语法高亮、语法代码提示、语法lint检测 ESLint语法纠错 Prettier 2.左下角设置 3.进行配置 配置内容&#xff1a; {"editor.fontSize": 20,"window.zoomLevel": 1,"workben…

Windows】【DevOps】Windows Server 2022 采用WinSW 启动一个会创建新的控制台程序窗口的程序行为分析

WinSW使用参考 【Windows】【DevOps】Windows Server 2022 采用WinSW将一个控制台应用程序作为服务启动&#xff08;方便&#xff09;-CSDN博客 源码 调整ConsoleApp1程序源代码如下&#xff1a; using System; using System.Diagnostics; using System.IO; using System.R…

软件生存期和软件过程

软件生存周期 软件生存周期&#xff08;Software Life Cycle&#xff09;&#xff1a;一个软件项目从问题提出开始&#xff0c;直到软件产品最终退役&#xff08;废弃不用&#xff09;为止。 软件生存周期分为三个时期&#xff1a;计划、开发和维护 整个软件生存周期划分为多…

王爽汇编语言第三版实验3

实验任务 将下面的程序保存为t1.asm&#xff0c;将其生成可执行文件t1.exe 用Vscode编写源程序t1.asm 用脚本一键生成可执行文件t1.exe 成功运行 查看资源管理器&#xff0c;成功生成T1.obj与t1.exe文件‘ 用debug跟踪t1.exe的执行过程&#xff0c;写出每一步执行后&#xff…

大模型生图安全疫苗注入——进阶解决方案与系统优化(DataWhale组队学习)

引言 大家好&#xff0c;我是GISer Liu&#x1f601;&#xff0c;上篇博客中&#xff0c;我们基于DataWhale 2024年10月大模型生图安全疫苗注入赛道的任务&#xff0c;介绍了攻击与防御的基本策略&#xff0c;如通过上下文稀释法、隐喻替换等绕过检测机制&#xff0c;并提出了多…

win10远程桌面打开后,其他主机访问时会报错:发生内部错误;关闭远程桌面,则报无法连接;

win10远程桌面打开后&#xff0c;其他主机访问时会报错&#xff1a;发生内部错误&#xff1b;关闭远程桌面&#xff0c;则报无法连接&#xff1b; 该问题困扰两天&#xff0c;最后这篇文章找到解决方法&#xff0c;成功连上了&#xff1a;https://www.zun.com/zx/yunwei/4798.h…

三维指纹定位,MATLAB编写的代码

文章目录 介绍&#xff1a;三维指纹定位系统产品概述主要特点技术细节适用场景代码 运行结果代码截图与程序结构 介绍&#xff1a;三维指纹定位系统 产品概述 此三维指纹定位系统采用先进的 K N N KNN KNN&#xff08;K-最近邻&#xff09;算法&#xff0c;结合四个基站的信号…

Python画笔案例-086 turtle 多线程绘画

1、turtle 多线程绘画 通过 python 的turtle 库 多线程绘画,如下图: 2、实现代码 turtle 库 多线程绘画,以下为实现代码: """多线程绘画.py """ from random import random,randint from turtle import Turtle,Screen from threading

力扣66~70题

题66&#xff08;简单&#xff09;&#xff1a; python代码&#xff1a; class Solution:def plusOne(self, digits: List[int]) -> List[int]:s_str.join([str(i) for i in digits])nstr(int(s_str)1)n_strlist(n)res[int(i) for i in n_str]return res题67&#xff08;简…

设计模式——代理模式(6)

一、写在前面 结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式&#xff0c;前者采用继承机制来组织接口和类&#xff0c;后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低&#xff0c;满足“合成复用原则…

018_FEA_Structure_Static_in_Matlab三维结构静力学分析

刹车变形分析 本示例展示了如何使用 MATLAB 软件进行刹车变形分析。 这个例子是Matlab官方PDE工具箱的第一个例子&#xff0c;所需要的数据文件都由Matlab提供&#xff0c;包括CAD模型文件。 步骤 1: 导入 CAD 模型 导入 CAD 模型&#xff0c;这里使用的是一个带有孔的支架模…

C# 实操高并发分布式缓存解决方案

1. CAP 原则 CAP 原则也称为布鲁尔定理&#xff0c;由 Eric Brewer 在 2000 年提出&#xff0c;描述了分布式系统中的三个核心属性&#xff1a;一致性&#xff08;Consistency&#xff09;、可用性&#xff08;Availability&#xff09;、分区容错性&#xff08;Partition Tol…

OpenCV高级图形用户界面(15)注册一个回调函数来处理鼠标事件的函数setMouseCallback()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 为指定的窗口设置鼠标处理器。 setMouseCallback 是 OpenCV 中的一个功能&#xff0c;允许开发者注册一个回调函数来处理鼠标事件。当用户在窗口…