2012-01-09 2 views
1

후 나는 포크()ls 명령을 실행하는 아이에게 시도 프롬프트 제공하지 않습니다.때 execlp()는 다시 실행

#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); 
} 

이 잘 작동하지만 커서가 아이의 실행 후 내동댕이. Enter 키를 눌러 단말기를 다시 가져와야합니다. 왜 그런가요?

답변

2

하위 프로세스가 완료되기 전에 주 프로세스가 종료됩니다. wait() 또는 waitpid()를 사용하여 하위 프로세스가 종료 될 때까지 기다립니다.

+0

감사합니다. 그걸 해결했습니다 :) – Pithikos

+0

부모 및 자녀가 퇴장 한 경우 자녀의 상태를 어떻게 알 수 있습니까? 나는 waitpid를 사용해야합니까? 어디에서 사용할 수 있습니까? – kapilddit

관련 문제