Terminal C中的execlp()不';执行后不要立即返回

Terminal C中的execlp()不';执行后不要立即返回,terminal,exec,fork,prompt,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(

我尝试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);
}
#包括
#包括
#包括
#包括
int main(){
如果(fork()==0){//child
execlp(“ls”、“ls”、“-l”、(char*)0);
出口(1);
}
fflush(stderr);//无法解决我的问题
fflush(stdout);//无法解决我的问题
出口(0);
}

这可以很好地工作,但是在执行子对象之后,光标会被卡住。我必须按回车键才能回到终端。为什么会这样?

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

如果父进程和子进程退出,如何获取子进程的状态?我需要使用waitpid吗?何时何地可以使用它?