【Linux之进程间通信】01.fork函数

news/2024/11/7 5:41:29/

 
【Linux之进程间通信】

项目代码获取:https://gitee.com/chenshao777/linux-processes.git
(麻烦点个免费的Star哦,您的Star就是我的写作动力!)

01.fork函数

pid_t fork(void);

fork()函数的作用产生一个一模一样的子进程
返回值:
   返回两个值
   对于主进程来说返回的是子进程的pid
   对于子进程来说返回是0

代码例子:

#include <unistd.h>  
#include <stdio.h>  
int main(void)  
{  pid_t pid_f;int count = 0;printf("pid of main = %d\n", getpid());/*  返回的两个值对于主进程来说返回的是子进程的pid对于子进程来说返回是0  */pid_f = fork();if(pid_f > 0){count++;printf("我是父进程, count = %d\n", count);printf("我是父进程, pid = %d pid_f = %d\n", getpid(), pid_f);}else{count++;printf("我是子进程, count = %d\n", count);printf("我是子进程, pid = %d pid_f = %d\n", getpid(), pid_f);}return 0;  
}  

编译运行

hc@hc-vm:~/Linux_ARM/git/linux-processes/01.进程编程fork()$ gcc 01.fork.c -o fork
hc@hc-vm:~/Linux_ARM/git/linux-processes/01.进程编程fork()$ ./fork
pid of main = 72712
我是父进程, count = 1
我是父进程, pid = 72712 pid_f = 72713
我是子进程, count = 1
我是子进程, pid = 72713 pid_f = 0

印证了fork()在父进程中返回的值是子进程的pid
子进程中fork()的返回值是0,因为子进程没有子进程

且可以发现子进程复制了一份父进程的变量,他们对count++的操作均是自己的count变量,互不影响
但这样造成的问题就是父子进程无法通过用户空间的变量进行数据通信
解决进程间通信的手段有很多,比如管道、信号通信、共享内存、消息队列、信号灯,后面的博客再一一介绍


http://www.ppmy.cn/news/74468.html

相关文章

OpenHarmony支持HDMI接口声卡适配说明

高清多媒体接口&#xff08;High Definition Multimedia Interface&#xff0c;HDMI &#xff09;是一种全数字化视频和声音发送接口&#xff0c;可以发送未压缩的音频及视频信号。HDMI可用于机顶盒、DVD播放机、个人计算机、电视、游戏主机、综合扩大机、数字音响与电视机等设…

StringBuffer与StringBuilder的区别

&#x1f3c6;今日学习目标&#xff1a; &#x1f340;StringBuffer与StringBuilder的区别 ✅创作者&#xff1a;林在闪闪发光 ⏰预计时间&#xff1a;30分钟 &#x1f389;个人主页&#xff1a;林在闪闪发光的个人主页 &#x1f341;林在闪闪发光的个人社区&#xff0c;欢迎你…

【机器学习-K近邻算法】绝对通俗易懂的机器学习算法之一

1.k近邻算法 1.1 k近邻算法简介   1.定义&#xff1a;     就是通过你的“邻居”来判断你属于哪个类别。   2.如何计算你到你的“邻居”的距离&#xff1f;     一般时候&#xff0c;都是使用欧氏距离。 1.2 k近邻算法的api初步使用   1.sklearn     优势&a…

xxl-sso 单点登录

目录 1 项目启动修改Host文件运行路径SSO登录/注销流程验证 2 分析登录流程① 首次访问 client1 的 http://xxlssoclient1.com:8081/xxl-sso-web-sample-springboot/ &#xff0c;进入过滤器② 请求重定向至 server的 http://xxlssoserver.com:8080/xxl-sso-server/login?redi…

代码随想录 哈希表 Java

文章目录 &#xff08;简单&#xff09;242.有效的字母异位词&#xff08;简单&#xff09;383. 赎金信&#xff08;中等&#xff09;49. 字母异位词分组&#xff08;*中等&#xff09;438. 找到字符串中所有字母异位词&#xff08;简单&#xff09;349. 两个数组的交集&#x…

无效数据处理攻略: 如何从源头开始预防无效数据带来的风险

数据处理在现代社会中变得越来越重要&#xff0c;而对于数据的可靠性和准确性&#xff0c;我们始终非常关注。然而&#xff0c;即使在对数据进行了精心管理的情况下&#xff0c;无效数据依然可能存在&#xff0c;并可能对数据分析和决策带来不良影响。因此&#xff0c;处理无效…

基于Freertos的ESP-IDF开发——5.使用按键[不带消抖、带消抖、长按短按识别]

基于Freertos的ESP-IDF开发——5.使用按键[不带消抖、带消抖、长按短按识别] 0. 前言1. 确定GPIO引脚2. 触发函数(不带消抖)3. 触发函数(带消抖)4. 长按和短按识别5.其他FreeRtos文章 0. 前言 这一节我们来学习使用按键操作。包括带消抖和不带消抖。 由于之前已经学习过FreeR…

HTML+CSS实训——Day01——安装好环境+写一个简单的应用启动页面

前言 学校最近开始实训周了&#xff0c;一上就是一个月&#xff0c;本来想在课上学点考研的东西的&#xff0c;但是无奈任务重&#xff0c;而且最后还能有点小奖励&#xff0c;就认真学了&#xff0c;再者说&#xff0c;html也挺重要的&#xff0c;学一学也不算浪费时间。 软…