1、system()函数
相关函数:fork,execve,waipid,popen
表头文件:#include<stdlib.h>
函数定义:int system(const char *string)
system()会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串锁代表的命令,此命令执行后随即返回原调用的进程,在调用system()期间,SIGCHILD信号会被暂时搁置,SIGINT和SIGQUIT信号会被忽略。
system与exec的区别:
(1)system与exec都可执行进程外的命令,但是system是在原进程上新开辟一个进程,而exec是用新进程(命令)覆盖了原来的进程。
(2)二者都会产生返回值,system的返回值不影响原进程,exec的返回值影响原进程。
2、进程控制wait3和wait4
wait3和wait4提供的功能比wait、waitpid和waitid所提供的功能要多一个,这与附加参数rusage有关。该参数要求内核返回由终止进程及其所有子进程使用的资源汇总。
两个函数返回值:若成功返回进程ID,若出错则返回-1
资源统计信息包括用户CPU时间总量、系统CPU时间总量、页面出错次数、接收到信号的次数等。有关细节参阅getrusage(2)手册页。
3、WTERMSIG宏测试
WTERMSIG:测试作用通过信号来决定那个子线程被退出。
命令格式:
#include <sys/wait.h>
int WTERMSIG(int status);
调用情况:
与wait()和 waitpid()函数结合使用。
返回值:
WTERMSIG宏测试被执行后,若成功返回被终止的子进程的信号值。返回的信号值被定义在 sys/signals.h头文件中。