进程(下)

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;

       }

        

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值