目前我正在使用一个在C中为Linux开发的shell,最近有人把我引向execlp,让我从shell中执行不同的程序。我目前在shell中实现的示例非常简单,执行shell,运行'date'命令,execlp启动'date',这就足够简单了,将日期打印到终端。本例中的问题是,尽管日期程序成功执行并打印到终端,但它会在shell提示后立即打印。我猜execlp返回日期太晚了,导致它在提示打印后出现。有没有办法避免“滞后”?sleep函数似乎适合这里,但我不知道如何在execlp中实现它。。有什么想法吗??
谢谢!
最佳答案
在发出提示之前,您wait()
让您的子进程返回下面的代码过于简单化了需要做的事情,但给出了一般的要点:
switch (pid = fork()) {
case 0: execlp("date", "date", (char *)NULL);
exit(EXIT_FAILURE);
case -1: perror("fork");
break;
default: while ((r = waitpid(pid, &status, 0)) == (pid_t)-1) {
if (errno != EINTR) {
perror("wait");
break;
}
}
}
关于c - 在execlp调用期间休眠以避免输出“滞后”?可能吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51106801/