美文网首页
linux应用程序进程等待

linux应用程序进程等待

作者: 嵌入式工作 | 来源:发表于2018-11-07 11:58 被阅读0次

    1进程等待,fork创建的进程使子进程优先运行,

    2.方法:

    wait
    waitpid

    3演示代码如下

    #include<stdlib.h> 
    #include <stdio.h>
    #include <unistd.h>
    #include <errno.h>
    
    int main(void)
    {
        
        pid_t child;
        
        if((child=fork())==-1)
        {
            printf(" fork error :%d \n",strerror(errno));
            exit(1);
        }else if(0==child)//child 进程
        {
            printf("====child===start===\n");
            sleep(3);
            printf("*****child:%d**********\n",getpid());
            exit(0);
            
        }else 
        {
          printf("====father===start===\n");
            wait(NULL);//等待子进程结束
           // waitpid(-1, NULL, 0);
            printf("*****father:%d**********\n",getpid());
            exit(0);
        }
        
    }
    

    4演示结果

    test@ubuntu:~/test$ gcc -o wp wait_waitpid.c 
    test@ubuntu:~/test$ ./wp
    ====father===start===
    ====child===start===
    *****child:15728**********
    *****father:15727**********
    test@ubuntu:~/test$ 
    

    5waitpid相关知识点

    waitpid相关知识点
    #include <sys/types.h> 
    #include <sys/wait.h>
    pid_t waitpid(pid_t pid,int *status,int options);
    pid<-1  等待进程组号为pid绝对值的任何子进程。
    pid=-1  等待任何子进程,此时的waitpid()函数就退化成了普通的wait()函数。
    pid=0   等待进程组号与目前进程相同的任何子进程,也就是说任何和调用waitpid()函数的进程在同一个进程组的进程。
    pid>0   等待进程号为pid的子进程。
    
    
    WIFEXITED(status)   如果子进程正常结束,它就返回真;否则返回假。
    WEXITSTATUS(status) 如果WIFEXITED(status)为真,则可以用该宏取得子进程exit()返回的结束代码。
    WIFSIGNALED(status) 如果子进程因为一个未捕获的信号而终止,它就返回真;否则返回假。
    WTERMSIG(status)    如果WIFSIGNALED(status)为真,则可以用该宏获得导致子进程终止的信号代码。
    WIFSTOPPED(status)  如果当前子进程被暂停了,则返回真;否则返回假。
    WSTOPSIG(status)    如果WIFSTOPPED(status)为真,则可以使用该宏获得导致子进程暂停的信号代码。
    
    
    参数options提供了一些另外的选项来控制waitpid()函数的行为。如果不想使用这些选项,则可以把这个参数设为0。
    主要使用的有以下两个选项:
    参数  说明
    WNOHANG 如果pid指定的子进程没有结束,则waitpid()函数立即返回0,而不是阻塞在这个函数上等待;如果结束了,则返回该子进程的进程号。
    WUNTRACED   如果子进程进入暂停状态,则马上返回。
    
    

    相关文章

      网友评论

          本文标题:linux应用程序进程等待

          本文链接:https://www.haomeiwen.com/subject/rqnmxqtx.html