linux进程(一)初识、创建进程fork函数

(一)初识

什么是程序,什么是进程,区别又是什么?

程序是静态的概念,进程是执行,比如说程序跑起来了就叫做多出了一个进程。

如何查看系统中有哪些进程?

使用PS指令查看,

ps -aux|grep splash使用以上指令查看系统中的特定进程(splash)

使用top指令查看系统的进程(类似于windows下的任务管理器)

什么是进程标识符?

c程序的存储空间是怎么分配的?

(二)、创建进程

执行以上程序发现printf函数被调用了2次,就说明了原来的进程调用了一次printf函数,用fork函数创建一个新的进程又调用了一次printf函数。

以下图片验证以上过程:

创建进程有两种方式:一种是fork()函数,另外一个是vfork()函数,

区别:

1、vfork()直接使用父进程存储空间,不拷贝

2、保证子进程的优先使用,当子进程调用exit退出后,父进程才执行

循环结构中break、continue、return和exit的区别_跳出当前for循环-CSDN博客

调用exit()函数将会结束当前进程,同时删除子进程所占用的内存空间,把返回信息传给父进程。当exit()中的参数为0时,表示正常退出;

如果不用exit()正常退出子进程的话,子进程某些变量会被破坏。

子进程退出状态不被收集,会变成僵死进程。如下:

(三)父进程等待子进程退出

在父进程里面调用wait()函数等待子进程退出(此时父进程为阻塞状态),子进程结束后父进程提取其状态码就可知子进程做到哪一步退出的。

wait()函数使调用者阻塞,waitpid()函数中的options中的参数可以使得调用者不阻塞

waitpid()函数的用法请见:Linux中waitpid()函数的用法_linux waitpid函数用法-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值