linux fork

#include 
#include 
#include 
int main()
{
    int iPid;
    int istatus;
    int pid;
    iPid = fork();

    switch(iPid)
    {
        case -1:
            printf("fork fail...\n");
            break;
        case 0:
            printf("child process...\n");
            printf("pid=%d, ppid=%d\n", getpid(), getppid());
            printf("child process exit...\n");
            exit(2);
            break;

        default:
            printf("parent...\n");
            pid=wait(&istatus);
            istatus = istatus >>8;

            printf("status=%d\n", istatus);
            printf("mypid=%d\n", pid);
            printf("parent exit...\n");
            break;

    }

    return 0;
}

输出:
parent…
child process…
pid=24435, ppid=24434
parent exit…
status=2
mypid=24435

  • fork():返回值等于0,子进程;大于0,父进程。防止子进程先与父进程退出,在父进程中使用wait()函数,参数可以为NULL,为了获取子进程的退出的状态码,可以传入参数,并右移动8位。函数返回值作为子进程的pid。
  • getpid():或者当前进程的pid。
  • getppid():获取父进程的pid.-

你可能感兴趣的:(linux,c,fork-函数应用,linnux-c)