gpt4 book ai didi

c - 在 execlp 调用期间休眠以避免输出 'lag'?是否可以?

转载 作者:太空宇宙 更新时间:2023-11-04 10:07:47 26 4
gpt4 key购买 nike

目前我正忙于用 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 调用期间休眠以避免输出 'lag'?是否可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51106801/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com