![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux系统编程之进程
文章平均质量分 51
chocolatemo
这个作者很懒,什么都没留下…
展开
-
13.popen函数
1.popen函数popen函数比system函数在应用中的好处:可以获取运行的输出结果,而system却不能函数头文件和原型:#include <stdio.h>FILE *popen(const char *command, const char *type);参数说明:(1)command: 是一个指向以 NULL 结束的 shell 命令字符串的指针。这行命令将被传到 bin/sh 并使用 -c标志,shell 将执行这个命令(2) type: 只读或只写类型。如果 t原创 2021-08-16 21:35:28 · 806 阅读 · 0 评论 -
12.system函数
1.system函数system函数原型:int system(const char *command); system函数相对exec族函数简单粗暴。并且system函数执行完毕后还会从函数调用点继续往下执行代码返回值: system()在调用/bin/sh时成功则返回进程状态值system()在调用/bin/sh时失败则返回-1 其他失败原因(如sh不能执行)返回1272.使用system函数示例代码一:#include<stdio.h&g...原创 2021-08-16 20:57:45 · 518 阅读 · 0 评论 -
11.exec族函数配合fork使用
1.exec配合fork使用实现功能:当父进程检测到输入为1的时候,创建子进程把配置文件的字段值改掉2.exec配合fork使用实现步骤:(1)先写好有修改配置文件功能的代码和配置文件有修改配置文件功能的代码:#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include<stdio.h>#include <unistd.h>#in...原创 2021-08-16 19:11:45 · 282 阅读 · 0 评论 -
10.linux进程---exec族函数(execl, execlp, execle, execv, execvp, execvpe)
1.exec族函数函数的作用:我们用fork函数创建新进程后,经常会在新进程中调用exec函数去执行另外一个程序。当进程调用exec函数时,该进程被完全替换为新程序。因为调用exec函数并不创建新进程,所以前后进程的ID并没有改变。2.exec族函:功能: 在调用进程内部执行一个可执行文件。可执行文件既可以是二进制文件,也可以是任何Linux下可执行的脚本文件。函数族: exec函数族分别是:execl, execlp, execle, execv, execvp, execvpe函数原创 2021-08-16 14:07:48 · 939 阅读 · 0 评论 -
9.父进程等待子进程退出及waitpid
1.waitpid()函数函数原型(常用):pid_t waitpid(pid_t pid,int *status,int options);参数:pid从参数的名字pid和类型pid_t中就可以看出,这里需要的是一个进程ID。但当pid取不同的值时,在这里有不同的意义。 (1)pid>0时,只等待进程ID等于pid的子进程,不管其它已经有多少子进程运行结束退出了, 只要指定的子进程还没有结束,waitpid就会一直等下去。 (2)p...原创 2021-08-16 12:39:40 · 541 阅读 · 0 评论 -
8.父进程等待子进程退出
1.为什么要等待子进程退出父进程等待子进程退出并收集子进程退出状态子进程退出状态不被收集,会变成僵尸进程(僵死进程)僵尸进程例子代码:#include<stdio.h>#include <sys/types.h>#include <unistd.h>#include<stdlib.h>int main(){ pid_t pid; int cnt = 0; pid = vfork();原创 2021-08-15 20:34:07 · 332 阅读 · 0 评论 -
7.进程退出
1.linux下正常的退出方式: (1)在main函数中使用了return返回. (return之后把控制权交给调用函数) (2)进程调用exit(),标准c库(3)进程调用_exit或者_Exit;,属于系统调用2.异常退出:(1)调用abort函数(2)进程收到某个信号,而该信号是程序中止,如ctrl + c(3)最后一个线程对取消(cancellation)请求做出响应不管是哪一种退出方式,最后都会执行内核中的同一代码,这段代码用来关闭进程所用到的已经打开...原创 2021-08-15 19:21:08 · 130 阅读 · 0 评论 -
6.vfork函数创建进程
1.vfork函数 函数原型:pid_t vfork(void);功能: vfork() 函数和 fork() 函数一样都是在已有的进程中创建一个新的进程,但它们创建的子进程是有区别的。参数:无返回值: 成功:子进程中返回 0,父进程中返回子进程 ID。pid_t,为无符号整型。 失败:返回 -1。2.fork() 与 vfock() 区别 (1)fork(): 父子进程的执行次序不确定。 ...原创 2021-08-15 18:38:25 · 474 阅读 · 0 评论 -
5.创建新进程的应用
1.fork创建子进程的目的 (1)一个父进程希望复制自己,使父子进程同时执行不同的代码段,在这个网络服务进程中 是常见的。父进程等待客户端的服务请求。当这种请求到达时,父进程调用fork,使子进 程处理此请求。父进程则继续等待下一个服务请求到达。通俗点就是为了让一个程序同 时走不通的分支。如父进程做A事情/流程,子进程做B事情/流程。 (...原创 2021-08-15 18:00:01 · 70 阅读 · 0 评论 -
3.打印父子进程fork函数的返回值
(1)在父进程中,fork返回新创建子进程的进程ID;(2)在子进程中,fork返回0;(3)如果出现错误,fork返回一个-1。打印父子进程fork函数的返回值代码: 此段代码不够严谨哈!!!!#include<stdio.h>#include <sys/types.h>#include <unistd.h>int main(){ pid_t pid; pid_t pid2; pid...原创 2021-08-15 17:03:56 · 1016 阅读 · 0 评论 -
2.创建进程fork函数的使用
1.使用fork函数创建一个进程 函数原型:pid_t fork(void);fork函数调用成功,返回两次(1)在父进程中,fork返回新创建子进程的进程ID(非负数);(2)在子进程中,fork返回 0(3)如果出现错误,fork返回 -1...原创 2021-08-15 16:45:36 · 401 阅读 · 0 评论 -
1.进程相关概念
1.什么是程序?什么是进程?它们有何区别?(1)程序是静态的概念,如gcc xxx.c -o pro 磁盘中生成pro文件,叫做程序(2)进程是程序的一次执行,通俗点意思是程序跑起来了,系统中就多了一个进程。它是系统进 行资源分配和调度的一个独立单位。(3)程序与进程的区别: a. 程序是永存的;进程是暂时的,是程序在数据集上的一次执行,有创建有撤销,存 ...原创 2021-08-15 15:12:42 · 142 阅读 · 0 评论