execlp () в C не возвращает подсказку после выполнения - PullRequest
1 голос
/ 09 января 2012

Я пытаюсь 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 Ответ

2 голосов
/ 09 января 2012

Ваш основной процесс завершается до завершения дочернего процесса. Дождитесь завершения дочернего процесса с помощью wait () или waitpid ().

...