
linux_进程
now
讀书会上瘾
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
linux——popen函数使用
command:是一个指向以NULL结束的shell命令字符串的指针。无法获得system的值,需要使用popen。可以将ps的输出结果捕获到ret空间中读出。type:只能是读或写的其中一种r/w。原创 2023-04-10 11:57:24 · 456 阅读 · 0 评论 -
linux——system的使用
可以看出,system是建立子进程来运行execl(system是封装后的execl函数)如果system()在调用/bin/sh时失败则返回127,其他失败原因返回-1。成功,则返回进程的状态值;不能执行时,返回127;cat config.txt能够发现LENG=9变成了LENG=5。用法:./changedata config.txt。编译运行:./a.out输入1。system函数api的使用。原创 2023-04-10 11:31:25 · 654 阅读 · 0 评论 -
linux——exec族函数配合fork使用
cp ../file_biancheng/changedata .:将file_biancheng文件夹里的changedata拷贝到当前文件夹。gcc demo13.c -o changedata:生成changedata。实现功能,当父进程检测到输入为1的时候,创建子进程把配置文件的字段值修改掉。1、输入1,建立一个子进程,修改config.txt中的内容。编译运行:输入1后的结果:同样将LENG值修改成了5。可以看出,LENG=9变为了LENG=5。2、使用exec实现。原创 2023-04-10 00:09:24 · 117 阅读 · 0 评论 -
linux——exec族函数
我们用fork函数创建新进程后,经常会在新进程中调用exec函数去执行另外一个程序。file:如果参数file中包含/,则就将其视为路径名,否则就按PATH环境变量,在它所指定的各目录中搜寻可执行文件。exec函数族的函数执行成功后不会返回,调用失败时,会设置ermo并返回-1,然后从原程序的调用点接着往下执行。arg:可执行程序所带的参数,第一个参数为可执行文件名字,没有带路径必须以NULL结束。echo $PATH:显示当前PATH环境变量,该变量的值由一系列以冒号分隔的目录名组成。原创 2023-04-09 21:39:26 · 1243 阅读 · 0 评论 -
linux——孤儿进程
父进程如果不等待子进程退出,在子进程之前就结束了自己的“生命”,此时子进程叫做孤儿进程。编译运行结果:可以看到原先父进程pid为24463,父进程结束后被系统init收留父进程pid变为1。linux避免系统存在过多孤儿进程,init进程收留孤儿进程,变成孤儿进程的父进程。原创 2023-04-09 17:35:41 · 123 阅读 · 0 评论 -
linux——父进程等待子进程退出2
WUNTRACED 若某实现支持作业控制,而pid指定的任一子进程已处于暂停状态,并且其状态自暂停以来还未报告过,则返回其状态。WCONTINUED 若实现支持作业控制,那么由pid指定的任一子进程在暂停后已经继续,但其状态尚未报告,则返回其状态。pid==0 等待其组ID等于调用进程组ID的任一子进程。pid>0 等待其进程ID与pid相等的子进程。编译运行结果:子进程、父进程同时运行3次,子进程退出,父进程运行。wait的options常量。原创 2023-04-09 17:22:48 · 175 阅读 · 0 评论 -
linux——父进程等待子进程退出
exit,正常退出,这种情况需要执行WEXITSTATUS(status),取子进程传送给exit、_exit或_Exit参数的低8位。需要知道子进程干完没,正常退出为干完了,异常退出有3种情况,abord、ctrl+c。运行打印结果,可以正常获取到子进程退出的返回值3。子进程退出状态不被收集,变成僵尸进程(僵死进程)创建子进程的目的————干活。父进程等待子进程退出,并收集子进程的退出状态。非空:子进程退出状态放在它所指向的地址中。为什么要等待子进程退出?父进程等待子进程api。并且不会形成僵死进程。原创 2023-04-09 16:53:19 · 473 阅读 · 0 评论 -
linux——进程退出
对于三个终止函数(exit\_exit\_Exit),实现这一点的方法是,将其退出状态(exit status)作为参数传送给函数。在异常终止情况下,内核(不是进程本身)产生一个指示其异常终止原因的终止状态(terminatio statu)。进程退出调用(exit\_exit\_Exit)函数,尽量调用exit函数,调用后会对子进程调用的数据进行一下冲刷处理再退出,_exit\_Exit是直接退出。3、进程调用_exit()或者_Exit(),属于系统调用。进程退出分为正常退出&异常退出。原创 2023-04-09 12:30:43 · 636 阅读 · 0 评论 -
linux——vfork函数创建进程
2、vfork保证子进程先运行,当子进程调用exit退出后,父进程才执行;使用fork父进程与子进程一起运行。1、vfork直接使用父进程存储空间,不拷贝。如果使用break退出,会破坏cnt的值。vfork与fork的qubie。原创 2023-04-09 12:05:57 · 125 阅读 · 0 评论 -
linux——fork创建一个子进程的一般目的
1、父进程希望复制自己,使父、子进程同时执行不同的代码段。这在网络服务进程中是常见的——父进程等待客户端的服务请求。当请求到达,父进程调用fork,使子进程处理此请求。父进程则继续等待下一个服务请求的到达。2、一个进程要执行一个不同的程序。这对shell是常见的情况。在这种情况下,子进程从fork返回后立即调用exec(调用另一个进程,看之后的博客)—fork—客户端2。—fork—客户端3。代码演示结果:可以输入1来创建多个子进程,每个子进程的pid号都不同。服务器—fork—客户端1。原创 2023-04-09 11:39:48 · 265 阅读 · 0 评论 -
linux——进程创建发生了什么事
在早期,fork之后,新进程会拷贝存储空间中正文、数据、堆栈内容进行拷贝;fork之后,先运行父进程还是子进程,取决于进程调度。早期代码端共享,数据段进行copy一份,子进程fork之后对数据的操作并不改变父进程中的数据。之后,linux更新,fork之后进行写实拷贝,如果后边代码不对赋值参数进行改变的话,采用共享这个内存空间。fork之后,子进程与父进程的关系。原创 2023-04-09 10:55:07 · 113 阅读 · 0 评论 -
linux——fork的使用,创建进程函数
fork函数之后,程序运行了两遍,一遍为父进程运行的,一遍为子进程运行的。两个pid号一致的为父进程,pid号不一致的为子进程。2、修改代码,做出判断,两个进程分别运行。返回值为非负数,代表当前进程为父进程。4、fork返回值判断父进程、子进程。返回值为0,代表当前进程是子进程。fork函数调用成功,返回两次。使用fork函数创建一个进程。原创 2023-04-09 01:26:09 · 395 阅读 · 0 评论 -
linux——进程相关概念
用getpid函数来获取自身的进程标识符,getppid获取父进程的进程标识符。1、程序是静态的概念,gcc xxx.c -o pro 会生成pro文件,叫做程序(没跑起来)ps -aux|grep init:过滤作用,查找init进程。进程是程序的一次运动活动,程序跑起来了,系统中就多了一个进程。4、父进程&子进程:进程A创建进程B,A为父进程,B为子进程。5、c程序的存储空间分配(代码段、数据段、bss、堆、栈)1、什么是程序,什么是进程,有什么区别。4、什么叫父进程,什么叫子进程?原创 2023-04-09 00:38:01 · 81 阅读 · 0 评论