zoukankan      html  css  js  c++  java
  • linux进程控制开发实例

    fork.c

    #include <sys/types.h>
    #include <unistd.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void)
    {
        pid_t result;
        
        result = fork();
        
        if (result == -1)
        {
            printf("Fork Error!
    ");
        }
        else
        {
            if (result == 0)
            {
                printf("The returned value is %d
    The child process!!
    My PID is %d
    ", result, getpid());
            }
            else
            {
                printf("The returned value is %d
    The father process!!
    My PID is %d
    ", result, getpid());
            }
        }
        
        return 0;
    }

    exec.c

    #include <unistd.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void)
    {
        pid_t result;
        
        result = fork();
        
        if (result == 0)
        {
            if (execlp("ps", "ps", "-ef", NULL) < 0)
            {
                printf("Execlp error
    ");
            }
        }
        
        return 0;
    }

    waitpid.c

    #include <sys/types.h>
    #include <sys/wait.h>
    #include <unistd.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void)
    {
        pid_t pc, pr;
        
        pc = fork();
        
        if (pc < 0)
        {
            printf("Error fork
    ");
        }
        else if (pc == 0)
        {
            sleep(5);
            exit(0);
        }
        else
        {
            do
            {
                pr = waitpid(pc, NULL, WNOHANG);
                
                if(pr == 0)
                {
                    printf("The child process has not exited!
    ");
                    sleep(1);
                }
            }while (pr == 0);
            
            if (pr == pc)
            {
                printf("Get child exit code: %d
    ", pr);
            }
            else
            {
                printf("Some error occured.
    ");
            }
        }
        
        return 0;
    }

    参考资料:《嵌入式Linux应用程序开发标准教程》

  • 相关阅读:
    吃推荐3个最近去了的好地方
    30岁生日
    今天开始试用Briglow Hair Cream
    WPF中如何在文本外面加虚线外框
    对账算法改进
    如何退出正在Sleep的线程
    关于framework4.5的相关介绍
    恐怖的报警邮件
    对帐引擎2个月后的监控数据
    wcf rest服务启用gzip压缩
  • 原文地址:https://www.cnblogs.com/amanlikethis/p/7011143.html
Copyright © 2011-2022 走看看