IO进程线程DAY 5

僵尸进程:

#include 
#include 
#include 
#include 

int main(int argc, char const *argv[])
{
    #if 1
    pid_t iPid = fork();
    if(iPid < 0)
    {
        perror("fork");
        return -1;
    }
    else if(iPid > 0)// parent
    {
        printf("My child is %d.\n", iPid);
        sleep(300);
    }
    else// child
    {
        printf("I'm child : %d.\n", getpid());
        exit(EXIT_SUCCESS);
    }
    #endif
    return 0;
}

IO进程线程DAY 5_第1张图片

孤儿进程:

#include 
#include 
#include 
#include 

int main(int argc, char const *argv[])
{
    #if 1
    pid_t iPid = fork();
    if(iPid < 0)
    {
        perror("fork");
        return -1;
    }
    else if(iPid > 0)// parent
    {
        printf("My child is %d.\n", iPid);
        exit(EXIT_SUCCESS);
    }
    else// child
    {
        while(1)
        {
            printf("I'm running.\n");
            sleep(1);
        }
    }
    #endif
    return 0;
}

守护进程(幽灵进程):

#include 
#include 
#include 

int main(int argc, char const *argv[])
{
    // 1. orphan
    if(0 == fork())
    {
        // 2. pid_t setsid(void);
        setsid();
        // 3. int chdir(const char *path);
        chdir("/");
        // 4. umask(0);
        umask(0);
        // 5. close
        for(int i = 0; i < getdtablesize(); i++)
        {
            close(i);
        }
        while(1)
        {
            // function
            NULL;
        }
    }
    return 0;
}

你可能感兴趣的:(开发语言,c语言)