06进程 函数用法

1.创建一个新的进程 pid_t fork(void);
成功时父进程返回子进程的进程号,子进程返回0,失败返回-1
示例 pid_t pid1;

			pid1 = fork();

2.结束一个进程,并刷新(流)缓冲区 void exit(int status);
status 是一个整型的参数,可以利用这个参数传递进程结束时的状态。一般来说,0表示正常结束;其他的数值表示出现了错误,进程非正常结束。在实际编程时,父进程可以利用wait 系统调用接收子进程的返回值,从而针对不同的情况进行不同的处理。
3.结束一个进程,不刷新(流)缓冲区 void _exit(int status);

4.进程执行指定路径的程序(1) int execl(const char *path,const char *arg,…);
如果执行成功则函数不会返回, 执行失败则直接返回-1
示例 execl("/bin/ls",“ls”,"-a","-l","/etc",NULL)
path 执行的程序名称,包含路径
arg… 传递给执行的程序的参数列表

5.进程从PATH环境变量中查找函数并执行(1) int execlp(const char *path,const char *arg,…);
如果执行成功则函数不会返回, 执行失败则直接返回-1
示例 execlp(“ls”,“ls”,"-a","-l","/etc",NULL)

6.进程执行指定路径的程(2) int execv(const char *path, char *const argv[]);
如果执行成功则函数不会返回, 执行失败则直接返回-1
示例 char *arg[] = {“ls”,"-a","-l","/etc",NULL};
execv("/bin/ls",arg)<0)
argv[] 封装成指针数组的形式

7.进程从PATH环境变量中查找函数并执行(2) int execvp(const char *path, char *const argv[]);
如果执行成功则函数不会返回, 执行失败则直接返回-1
示例 char *arg[] = {“ls”,"-a","-l","/etc",NULL};
execvp(“ls”,arg);

8.执行命令 int system(const char *command);
成功时返回命令command执行结束后才继续执行,失败-1
system()会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令,此命令执行完后随即返回原调用的进程。
system(“mkdir $HOME/.SmartPlatform/Files/”);

9.回收子进程(1) pid_t wait(int *status);
成功时返回回收的子进程的进程号,失败时返回EOF
status指定保存子进程返回值和结束方式的地址
status为NULL表示直接释放子进程PCB,不接收返回值
一般定义一个 int status;
然后用wait(&status);调用时直接传地址进去
子进程通过exit/_exit/return 返回某个值(0-255)
父进程调用wait(&status)回收
WIFEXITED(status) 是个宏 判断子进程是否正常结束
WEXITSTATUS(status) 宏 获取子进程返回值
WIFSIGNALED(status) 判断子进程是否被信号结束
WTERMSIG(status) 获取结束子进程的信号类型

10.回收子进程(2) pid_t waitpid(pid_t pit,int *status,int option);
成功时返回回收子进程的pid或0;失败EOF
pid 可用于指定回收哪个子进程或任意子进程,若pid为-1,则为回收任意一个子进程
status 指定用于保存子进程返回值和结束方式的地址
option 指定回收方式,0(阻塞,子进程没有结束,父进程一直阻塞直到子进程结束)或WNOHANG(非阻塞,如果子进程结束,回收成功,返回子进程进程号,子进程没有结束,返回0)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值