进程的执行退出函数

来源:互联网 发布:网络战略游戏图片 编辑:程序博客网 时间:2024/05/29 17:35

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的区别:在停止进程之前,要检查文件的打开情况,并把文件缓冲区中的内容写回文件才停止进程。





0 0