linux基础知识——创建进程

1.fork函数

\qquad执行一个可执行的程序,就创建一个进程。除此之外,还可以使用fork()函数创建一个子进程。
\qquadfork函数的返回值有两个,本质是一个进程变成两个进程,这两个进程各自对fork做返回:返回子进程pid(父进程非负整数);返回0(子进程创建成功)。

#include<stdio.h>
#include <unistd.h>int main()
{pid_t pid;printf("----------------------\n");pid = fork();if(pid==-1){printf("error\n");}else if(pid==0){printf("I am child,pid = %u, ppid = %lu\n",getpid(),getppid());// getpid()返回调用进程的进程ID;getppid()返回调用父级的进程ID}else{printf("I am parent,pid = %u, ppid = %lu\n",getpid(),getppid());sleep(1);}printf("-----------------------\n");return 0;
}

\qquad运行结果:

----------------------
I am parent,pid = 17257, ppid = 17200
I am child,pid = 17258, ppid = 17257
-----------------------
-----------------------

\qquad在程序执行到pid=fork()时,程序会创建一个子进程,
\qquad此时父进程的pid>0;执行

 printf("I am parent,pid = %u, ppid = %lu\n",getpid(),getppid());sleep(1);

\qquad然后继续向下执行

printf("-----------------------\n");

\qquad此时子进程pid=0;执行

printf("I am child,pid = %u, ppid = %lu\n",getpid(),getppid());

\qquad然后继续向下执行

printf("-----------------------\n");

2.循环创建子进程

#include<stdio.h>
#include<unistd.h>
int main()
{pid_t pid;int i;for(i=0;i<5;i++){pid = fork();if(pid==-1){printf("错误\n");}else if(pid==0){break;}}if(i<5){sleep(i);printf("i am %dth child,pid=%u\n",i+1,getpid());}else{sleep(i);printf("i am parent,pid=%u\n",getpid());}return 0;
}

3.getuid()和getgid()函数

\qquad获取当前进程的实际用户ID:uid_t getuid(void)
\qquad获取当前进程的有效用户ID:uid_t geteuid(void)
\qquad获取当前进程的使用用户组ID:gid_t getgid(void)
\qquad获取当前进程的有效用户组ID:gid_t getegid(void)

4.父子进程在fork()之后的异同

\qquad在fork之后:
\qquad相同点:全局变量;.data;.text;栈;堆;环境变量;用户ID;进程工作目录…
\qquad不同点:进程ID;fork返回值;父进程ID;进程运行时间;闹钟/定时器;未决信号集
\qquad父子遵循读时共享写时复制的原则。父子进程共享:文件描述符(打开文件的结构体);mmap建立的映射区。而父子进程执行的先后顺序,取决于内核的调度算法。

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

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

相关文章

【计算机网络复习 物理层】2.2 物理传输介质

物理传输介质一、传输介质及分类1.1 导向性传输介质1.1.1 双绞线1.1.2 同轴电缆1.1.3 光纤1.2 非导向性传输介质一、传输介质及分类 传输介质也称为传输媒体/传输媒介&#xff0c;它就是数据传输系统中在发送设备和接收设备之间的物理通路。 **传输介质并不是物理层。**传输介…

前沿科技 | 中科院科学家在关于运动规划的环路机制研究方面获进展

来源&#xff1a;中国科学院网站今年5月11日&#xff0c;Nature Communications在线发表了题为《皮层上丘环路在记忆依赖感知决策任务中的作用机制》的研究论文&#xff0c;该研究由中国科学院科学家团队——脑科学与智能技术卓越创新中心&#xff08;神经科学研究所&#xff0…

MyCP(课下作业,必做)

选做题目以及分析 题目&#xff1a;编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能&#xff0c;要求MyCP支持两个参数&#xff1a; java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件&#xff08;内容为十进制数字&#xff09;转化为二进制文件java MyCP -xt XXX1.bin XXX2.t…

linux的基础知识——多线程gdb调试

1.gdb调试 \qquadgdb调试命令&#xff0c;在生成可执行文件时&#xff0c;加-g gcc xxx.c -o xxx -g\qquad执行gdb xxx&#xff0c;就可以跳转到gdb调试界面&#xff0c;对xxx进行调试。 \qquad首先&#xff0c;我们要查看xxx.c的内容&#xff0c;以确定在哪里打断点。查看xxx…

一文讲解单片机、ARM、MCU、DSP、FPGA、嵌入式错综复杂的关系!

来源: ittbank首先&#xff0c;“嵌入式”这是个概念&#xff0c;准确的定义没有&#xff0c;各个书上都有各自的定义。但是主要思想是一样的&#xff0c;就是相比较PC机这种通用系统来说&#xff0c;嵌入式系统是个专用系统&#xff0c;结构精简&#xff0c;在硬件和软件上都只…

【计算机网络复习 物理层】2.3 物理层设备

物理层设备一、中继器二、集线器&#xff08;多口中继器&#xff09;一、中继器 诞生原因&#xff1a; 由于存在损耗&#xff0c;在线路上传输的信号功率会逐渐衰减&#xff0c;衰减到一定程度时将造成信号失真&#xff0c;因此会导致接收错误。 中继器的功能&#xff1a;对信…

Tomcat关闭失败,SEVERE: Could not contact localhost:8005. Tomcat may not be running.

SEVERE: Could not contact localhost:8005. Tomcat may not be running. Tomcat 启动后&#xff0c;关闭失败&#xff0c;显示以下 进入 java 的安装目目录下的 jdk/jre/lib/security 目录 修改 “java.security” 文件 vi java.security通过vim 命令 “ /securerandom.sourc…

linux基础知识——exec函数

1.exec函数 \qquadfork()函数在执行之后&#xff0c;父子进程其实还是执行同一个程序&#xff0c;不同的只是同一个程序的不同分支。如果要想让子进程执行另外一个不同的程序&#xff0c;这时候需要调用exec函数&#xff0c;这时候子进程的用户空间代码和数据完全被新程序替换&…

Gartner发布2022年重要战略技术趋势

来源&#xff1a;Gartner公司Gartner于今日发布企业机构在2022年需要探索的重要战略技术趋势。分析师们在本周四举行的Gartner IT Symposium/Xpo峰会美洲站期间公布了他们的研究结果。Gartner研究副总裁David Groombridge表示&#xff1a;“首席执行官和董事会正在设法通过与客…

【计算机网络复习 数据链路层】3.1 数据链路层功能概述

数据链路层功能概述一、数据链路层基本概念二、数据链路层功能概述一、数据链路层基本概念 结点&#xff1a; 主机、路由器 链路&#xff1a; 网络钟两个结点之间的物理通道&#xff0c;链路的传输介质主要有双绞线、光纤和微波。分为有线链路、无线链路。 数据链路&#xf…

爬虫 --通用篇

概述 爬虫是合法的吗? 是的,它是一个计算机的学科!一个工具 什么是爬虫? 通过编写程序,模拟浏览器上网,然后让其去互联网上爬取/获取数据的过程.爬虫爬取的也就是服务端的响应数据 爬虫使用场景的分类 - 通用爬虫 : 爬取一整张页面数据."抓取系统" - 聚焦爬虫 : 爬…

【计算机网络复习 数据链路层】3.2 封装成帧和透明传输

封装成帧和透明传输一、封装成帧二、透明传输一、封装成帧 封装成帧就是在一段数据的前后部分添加首部和尾部&#xff0c;这样就构成了一个帧。接收端在收到物理层上交的比特流后&#xff0c;就能根据首部和尾部的标记&#xff0c;从收到的比特流中识别帧的开始和结束。 首部…

linux基础知识——僵尸进城和孤儿进程

1.什么是孤儿进程&#xff1f; \qquad父进程先于子进程结束&#xff0c;则子进程成为孤儿进程。父进程结束后&#xff0c;子进程的父进程由init进程接替。 #include<stdio.h> #include<unistd.h> #include <stdlib.h>int main() {pid_t pid;pid fork();if(…

新一代人工智能:从“感知智能”向“认知智能”转化

来源&#xff1a;光明网 《光明日报》&#xff08; 2021年05月25日 09版&#xff09;新一代人工智能正在逐步从感知智能向认知智能转化——这是全国政协副主席、中国科协主席万钢在第五届世界智能大会上作出的判断。“感知智能是机器具备了视觉、听觉、触觉等感知能力&#xf…

迷宫城堡 强连通

Problem Description为了训练小希的方向感&#xff0c;Gardon建立了一座大城堡&#xff0c;里面有N个房间(N<10000)和M条通道(M<100000)&#xff0c;每个通道都是单向的&#xff0c;就是说若称某通道连通了A房间和B房间&#xff0c;只说明可以通过这个通道由A房间到达B房…

【计算机网络复习 数据链路层】3.3.1 差错控制(检错编码)

差错控制&#xff08;检错编码&#xff09;一、差错从何而来&#xff1f;二、数据链路层的差错控制2.1 奇偶校验码2.2 CRC循环冗余码一、差错从何而来&#xff1f; 概括来说&#xff0c;传输中的差错都是由于噪声引起的。 全局性&#xff1a;由于线路本身电气特性所产生的随机…

linux基础知识——wait函数和waitpid函数回收子进程

1.wait函数回收子进程 \qquad父进程可以调用wait()函数回收子进程的终止信息。wait函数有三个功能&#xff1a; \qquad阻塞等待子进程退出 \qquad回收子进程残留资源 \qquad获取子进程结束状态&#xff08;退出原因&#xff09; #include<stdio.h> #include<unistd.h…

从“元宇宙”热炒中理性看待我国虚拟现实产业发展

来源&#xff1a;工信头条作者&#xff1a;袁钰&#xff08;赛迪顾问、电子信息产业研究中心、分析师&#xff09;2021年4月以来&#xff0c;元宇宙概念大热&#xff0c;国内外巨头企业围绕“元宇宙”加快布局&#xff0c;作为元宇宙核心技术之一的虚拟现实也被寄予厚望。经数据…

2018-2019-2 网络对抗技术 20165332 Exp6 信息搜集与漏洞扫描

2018-2019-2 网络对抗技术 20165332 Exp6 信息搜集与漏洞扫描 基础问题回答 基础问题回答 &#xff08;1&#xff09;哪些组织负责DNS&#xff0c;IP的管理。 答&#xff1a;目前全球有5个地区性注册机构&#xff1a; ARIN主要负责北美地区业务 RIPE主要负责欧洲地区业务 APNIC…

【计算机网络复习 数据链路层】3.3.2 差错控制(纠错编码)

差错控制&#xff08;纠错编码&#xff09;一、海明码1.1 确定校验码位数r1.2 确定校验码和数据的位置1.3 求出校验码的值1.4 检错并纠错一、海明码 **海明码&#xff1a;**发现双比特错&#xff0c;纠正单比特错。 1.1 确定校验码位数r 海明不等式&#xff1a; r 为冗余信…