exec 和 fork的联用

系统调用 exec 和 fork()联合起来为程序员提供了强有力的功能。我们可以先用 fork()建立子进程,然后在子进程中使用 exec,这样就实现了父进程运行一个与其不同的子进程,并且父进程不会被覆盖。

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

int main(void)
{
        int pid;

        pid = fork();

        switch(pid)
        {
                case -1:
                        perror("fork failed");
                        exit(1);
                case 0:
                        execl("/bin/ls","ls","-l",NULL);
                        perror("execl failed");
                        exit(1);
                default:
                        wait(NULL);
                        printf("completed\n");
                        exit(0);
        }

        return 0;
}

在程序中,在调用 fork()建立一个子进程之后,马上调用了 wait(),使父进程在子进程

结束之前,一直处于睡眠状态。所以,wait()向程序员提供了一种实现进程之间同步的简单方法