Linux进程理解(冯诺依曼体系结构,操作系统,进程概念和基本操作)(下)

简介: Linux进程理解(冯诺依曼体系结构,操作系统,进程概念和基本操作)

五.进程PID

1.getpid()和getppid()

注意:pid_t的值都是正整数或0

下面我们来在代码当中查看一下process的进程ID和其父进程ID

while :; do ps ajx | head -1 && ps ajx | grep 可执行程序名字 | grep -v grep; sleep 1;done

这个shell命令可以死循环查看含有指定可执行程序名字的进程

每次while循环都会休眠1秒

按ctrl+c退出

根据进程ID查看对应进程的信息:

ps ajx | head -1 && ps ajx | grep 进程ID | grep -v grep

下面我们多次执行这个进程,发现:

2.fork()函数创建进程

1.fork()函数

2.演示

下面我们来演示一下

3.几点说明

1.进程的独立性

(任意)进程之间是具有独立性的,互相之间不能影响

即使父进程和子进程亲如父子,但是当我们的子进程和父进程都运行起来之后,

子进程挂了,代码也仍会存在,对父进程无影响

父进程挂了,代码也仍会存在,对子进程无影响

杀死父进程,子进程依然运行

不过此时因为父进程被杀死了,所以子进程无法通过ctrl+c退出

只能使用kill -9杀死子进程

杀死子进程,父进程依然运行,

右上方的窗口显示了子进程处于defunct(也就是关闭)的状态

说明子进程被杀死了,按ctrl+c后父进程可以正常退出

关于父子进程的话题,我们以后在介绍僵尸进程和孤儿进程的时候会进行详细说明的

在这里我们只需要知道:进程之间是具有独立性的,互相之间不能影响

2.关于fork函数返回值的几个问题
1.为何给父子进程的返回值是不同的?

通过fork函数的返回值区分父子进程,利用if else判断来让父子进程做不同的事情

2.fork函数为何会返回2次?

在fork函数内部,在执行到return语句之前,子进程已经被创建好了

又因为父子进程的代码是共享的

而且return语句本身也属于代码

所以return语句既会被父进程执行,也会被子进程执行

3.为何id作为同一个变量既可以表示父进程id,又可以表示子进程id呢?

这就涉及到写时拷贝的知识点了,先在这里提一下,以后我们还会提到的:

因此,我们可以得出:

在Linux中,可以用同一个变量名来表示不同的内存

4.创建多个子进程(观察进程的创建和退出的全过程)

下面我们创建多个子进程

观察一下进程的创建和退出的全过程

最后所有的子进程都退出了,只剩下一个父进程最后休眠了15秒之后才退出

这样我们就能够看到进程从创建到退出的全过程了

这里的子进程处于defunct(也就是关闭)的状态就表示该进程已经退出了

六.另一种查看进程的方法

1./proc

进程的信息可以通过 /proc 系统文件夹查看

ls /proc

查看具体某一个进程的信息:

ls /proc 进程id

下面我们用mycmd这个可执行程序来测试一下

我之前在Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉)这篇博客中提到过链接文件

接下来我们还会见到链接文件

2.exe链接文件

不过这个进程就只能执行这一次了,当这个进程结束之后,就无法再执行了

当我把mycmd这个可执行程序删除之后,这个进程依旧再运行

但是这个exe执行的那个可执行程序已经显示deleted了

3.如何改变cwd呢?

我们可以使用chdir函数

下面我们来实验一下

当前是在这个路径下

我想让它到

/home/wzs/wzsdir/systemlearndir

这个路径下

下面我们来创建一个文件

加深一下对cwd和fopen函数的理解

发现test.txt的确被创建在了

/home/wzs/wzsdir/systemlearndir

这个路径下

七.总结

这篇博客我们主要介绍了

1.冯诺依曼体系结构

2.操作系统

3.进程的概念,task_struct结构体

4.进程基础的相关操作:查看进程,杀死进程,改变进程所在工作目录

5.进程PID,fork函数创建进程

以上就是Linux进程理解(冯诺依曼体系结构,操作系统,进程概念和基本操作)的全部内容,希望能对大家有所帮助!

相关文章
|
10天前
|
缓存 资源调度 安全
深入探索Linux操作系统的心脏——内核配置与优化####
本文作为一篇技术性深度解析文章,旨在引领读者踏上一场揭秘Linux内核配置与优化的奇妙之旅。不同于传统的摘要概述,本文将以实战为导向,直接跳入核心内容,探讨如何通过精细调整内核参数来提升系统性能、增强安全性及实现资源高效利用。从基础概念到高级技巧,逐步揭示那些隐藏在命令行背后的强大功能,为系统管理员和高级用户打开一扇通往极致性能与定制化体验的大门。 --- ###
32 9
|
8天前
|
消息中间件 安全 算法
深入理解操作系统:进程管理的艺术
【10月更文挑战第38天】在数字世界的心脏,操作系统扮演着至关重要的角色。它不仅是硬件与软件的桥梁,更是维持计算机运行秩序的守夜人。本文将带你走进操作系统的核心——进程管理,探索它是如何协调和优化资源的使用,确保系统的稳定与高效。我们将从进程的基本概念出发,逐步深入到进程调度、同步与通信,最后探讨进程安全的重要性。通过这篇文章,你将获得对操作系统进程管理的全新认识,为你的计算机科学之旅增添一份深刻的理解。
|
9天前
|
缓存 运维 网络协议
深入Linux内核架构:操作系统的核心奥秘
深入Linux内核架构:操作系统的核心奥秘
27 2
|
12天前
|
安全 网络协议 Linux
Linux操作系统的内核升级与优化策略####
【10月更文挑战第29天】 本文深入探讨了Linux操作系统内核升级的重要性,并详细阐述了一系列优化策略,旨在帮助系统管理员和高级用户提升系统的稳定性、安全性和性能。通过实际案例分析,我们展示了如何安全有效地进行内核升级,以及如何利用调优技术充分发挥Linux系统的潜力。 ####
33 1
|
16天前
|
安全 Linux 数据安全/隐私保护
Vanilla OS:下一代安全 Linux 发行版
【10月更文挑战第30天】
38 0
Vanilla OS:下一代安全 Linux 发行版
|
19天前
|
人工智能 安全 Linux
|
4月前
|
安全 Linux 网络安全
部署07--远程连接Linux系统,利用FinalShell可以远程连接到我们的操作系统上
部署07--远程连接Linux系统,利用FinalShell可以远程连接到我们的操作系统上
|
4月前
|
Linux 虚拟化 数据安全/隐私保护
部署05-VMwareWorkstation中安装CentOS7 Linux操作系统, VMware部署CentOS系统第一步,下载Linux系统,/不要忘, CentOS -7-x86_64-DVD
部署05-VMwareWorkstation中安装CentOS7 Linux操作系统, VMware部署CentOS系统第一步,下载Linux系统,/不要忘, CentOS -7-x86_64-DVD
|
1月前
|
Unix 物联网 大数据
操作系统的演化与比较:从Unix到Linux
本文将探讨操作系统的历史发展,重点关注Unix和Linux两个主要的操作系统分支。通过分析它们的起源、设计哲学、技术特点以及在现代计算中的影响,我们可以更好地理解操作系统在计算机科学中的核心地位及其未来发展趋势。
|
3月前
|
编解码 安全 Linux
基于arm64架构国产操作系统|Linux下的RTMP|RTSP低延时直播播放器开发探究
这段内容讲述了国产操作系统背景下,大牛直播SDK针对国产操作系统与Linux平台发布的RTMP/RTSP直播播放SDK。此SDK支持arm64架构,基于X协议输出视频,采用PulseAudio和Alsa Lib处理音频,具备实时静音、快照、缓冲时间设定等功能,并支持H.265编码格式。此外,提供了示例代码展示如何实现多实例播放器的创建与管理,包括窗口布局调整、事件监听、视频分辨率变化和实时快照回调等关键功能。这一技术实现有助于提高直播服务的稳定性和响应速度,适应国产操作系统在各行业中的应用需求。
113 3
下一篇
无影云桌面