进程(下)

来源:互联网 发布:宏程序 刀具寿命 编程 编辑:程序博客网 时间:2024/05/18 03:18

1.sys/wait.h头文件里的宏定义:

        WIFEXITED(stat_val):如果子进程正常结束,则返回一个非零值。

        WEXITSTATUS(stat_val):如果WIFEXITED非零,返回子进程退出码。

        WIFSIGNALED(stat_val):子进程因未捕获信号而终止,返回非零值。

        WTERMSIG(stat_val):如果WIFSIGNALED非零,返回信号代码。

        WIFSTOPPED(stat_val):如果子进程终止,返回一个非零值。

        WSTOPSIG(stat_val):如果WIFSTOPPED非零,返回一个信号代码。

2. waitpid系统调用

    函数功能:用来等待某个特定进程的结束

    函数原型:pid_t waitpid(pid_t pid, int *stat_col, int options)

    参数:stat_col:如果不是空,会把状态信息写到它指向的位置。

               options:允许改变waitpid的行为,最有用的一个是WNOHANG,是防止waitpid把调用者挂起。

   返回值:成功返回子进程ID,失败返回-1;

3. 替换一个进程映像

     包含的头文件:#include<unistd.h>

     功能是用exec函数可以把当前进程替换为一个新进程。

     函数原型:int execl(const char *path, const char *arg, ...........)

                      int execlp(const char *file , const char *arg,............)

                      int execv(const char *path, char * const argv[]);

                      int execvp(const char *file, char *const argv[]);

      参数:path :要执行的文件的名称和路径

             argv:执行时要使用的参数。    

    返回值:成功时反返回零,失败反回-1.

     execl,execlp的参数是可变的,参数以NULL结束。

     函数名字是以"p"结尾的回去查找环境变量PATH,去查找新程序的可执行文件。如果可执行文件不在PATH定义的路径上 ,就必须把包括子目录在内的绝对文件名做为一个参数传递给这些函数。

4.execlp示例:

       #include<unistd.h>

       #include<stdio.h>

       int main()

       {

           printf("Running ps!");

           execlp("ps", "ps", "-aux");

           return 1;

       }

        

原创粉丝点击