Linux 如何创建进程函数与查看进程_linux java进程 查看热点函数(1)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

fork函数体伪代码

fork()
{
	...
	创建子进程
	...
	父进程和子进程都会调用return语句
	因此就可以做到各有各的返回值
	父进程返回子进程的pid
	子进程返回的是0(区分父子进程)
	return pid;
	在fork之外就可以通过返回值区分父子进程
}

但是这个fork()函数的返回值对于父子进程是不一样的
在父进程中返回创建的子进程pid
在子进程中返回的是0
所以可以根据返回值来分别执行父子进程的工作
通常根据fork的返回值进行代码的分流,让父子进程进入不同的判断执行完成不同的功能

pid_t getpid(void)

获取调用者进程的id
代码中的pid指的是fork函数的返回值
在这里插入图片描述
在这里插入图片描述

pid_t vfork(void)

该函数和fork函数一样都是在已有进程中创建一个新的进程,区别主要是:对于fork函数来说,父子进程的执行次序是不确定的,但是对于vfork函数来说会保证子进程先运行,在它调用exec函数或者exit函数之后父进程才可能调度运行,子进程在调用exec函数或exit函数之前与父进程数据是共享的,也就是共用一个虚拟地址空间。共用了同一块虚拟地址空间,就不能同时运行,不然会造成栈混乱,因此子进程先运行,结束后会让所有函数出栈,继续执行父进程
在这里插入图片描述
在这里插入图片描述
从该结果可以得出,子进程执行次序是在父进程之前,并且数据是共享的。

查看进程

ps -ef:查看进程信息
在这里插入图片描述

我们都知道,fork()函数可以创建子进程,那为什么要创建子进程呢?
创建子进程大多数情况下并不是为了让子进程做与父进程一样的事,而是让子进程去调度另一个程序的运行,如果这个任务有风险,交给子进程去做,哪怕数据处理出错崩溃了,也不会影响主线程,保证了主线程的安全。

ps -aux查看进程详细信息
在这里插入图片描述

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值