C中的execlp()在执行后没有给出提示

时间:2012-01-09 15:04:44

标签: terminal exec fork prompt

我尝试 fork()一个将运行ls命令的子项。

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>

int main() {

    if (fork()==0){ //child
        execlp("ls", "ls", "-l", (char*)0);
        exit(1);
    }

    fflush(stderr); //doesn't fix my problem
    fflush(stdout); //doesn't fix my problem
    exit(0);
}

这很好但是在执行子进程后光标卡住了。我必须按回车键才能回到终端。那是为什么?

1 个答案:

答案 0 :(得分:2)

您的主进程在子进程完成之前退出。等待子进程使用wait()或waitpid()退出。