Давайте возьмем этот фрагмент в качестве примера:
#include <signal.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <unistd.h>
int main(int argc, char const *argv[]) {
int pid = fork();
if (pid == 0) { // Child
execlp(argv[1], argv[1], NULL);
} else if (pid > 0) { // Parent
int n = atoi(argv[2]);
sleep(n);
kill(pid, SIGKILL);
int status;
wait(&status);
...
exit(0);
}
return 0;
}
После запуска с main [command] [seconds]
программа должна создать подпроцесс для выполнения данной команды и завершить его через n секунд.
Проблема в том, что если я вызываю его с аргументами top 3
, он корректно начинает top и завершается через 3 секунды, но у меня остается рабочая оболочка с невидимым текстом: я могу набирать и выполнять команды, но набранный текст не не будет отображаться на экране до тех пор, пока не будет запущен reset
.
Любое понимание того, что происходит?