1.execl:
(1)函数的作用:执行文件
(2)函数的原型:int execl(const char *path,const char *argv,...);
(3)函数的参数:path:字符串代表的文件路径
argv:执行文件传递的参数地址,最后一个以NULL结束。
(4)函数的返回值:成功不返回,失败返回-1。
(5)头文件:#include <unistd.h>
2.execv:
(1)函数的作用:执行文件
(2)函数的原型:int execl(const char *path,const *char argv[] );
(3)函数的参数:path:字符串代表的文件路径
argv[]:被执行程序所需的命令行参数数组。
(4)函数的返回值:成功不返回,失败返回-1。
(5)头文件:#include <unistd.h>
3.system:
(1)函数的作用:执行文件
(2)函数的原型:int system(const char *string)
(3)函数的参数:string:命令字符串。
(4)函数的返回值:在system调用/bin/sh失败时返回127,其他失败原因返回-1。若string为NULL时,则返回非0
值,如果执行成功则返回执行命令后的返回值。
(5)头文件:#include <stdlib.h>
4.wait:
(1)函数的作用:等待子进程中断或结束
(2)函数的原型:pid_t wait(int *status);
(3)函数的返回值:成功返回子进程的识别号,出错返回-1。
(4)头文件:#include <sys/types.h>
#include <sys/wait.h>
(5)说明:wait会暂停目前进程的执行,直到有信号来或子进程结束。如果调用wait时,子进程已经结束会立即结束。
5.waitpid:
(1)函数的作用:等待子进程中断或结束
(2)函数的原型:pid_t waitpid (pid_t pid, int * status, int options);
(3)函数的参数:参数:如果不在意结束状态值,则参数status可以设成NULL。
参数pid为欲等待的子进程识别码:
\ pid<-1 等待进程组识别码为pid绝对值的任何子进程。
pid=-1 等待任何子进程,相当于wait()。
pid=0 等待进程组识别码与目前进程相同的任何子进程。
pid>0 等待任何子进程识别码为pid的子进程。
参数option可以为0 或下面的OR 组合
WNOHANG:如果没有任何已经结束的子进程则马上返回,不予以等待。
WUNTRACED :如果子进程进入暂停执行情况则马上返回,但结束状态不予以理会。
(4)函数的返回值:成功返回子进程的pid,出错-1。如果使用WNOHANG,无子进程退出,则返回0。
6.exit:
(1)函数的作用:正常结束进程
(2)函数的原型:void exit(int status);
(3)头文件:#include <stdlib.h>
(4)说明:exit()用来正常终结目前进程的执行,并把参数status返回给父进程,而进程所有的缓冲区数据会自动写回
并关闭未关闭的文件。
7._exit:
(1)函数的作用:正常结束进程
(2)函数的原型:void _exit(int status);
(3)头文件:#include <unistd.h>
(4)说明:_exit()用来立刻结束目前进程的执行,并把参数status返回给父进程,并关闭未关闭的文件。此函数调用
后不会返回,并且会传递SIGCHLD信号给父进程,父进程可以由wait函数取得子进程结束状态。
exit与_exit的区别:
_exit: 直接使进程停止,清除其使用的内存,并清除缓冲区中内容。
exit与 _exit的区别:在停止进程之前,要检查文件的打开情况,并把文件缓冲区中的内容写回文件才停止进程。