我正在使用C制作自己的shell,如果我在命令末尾使用&
,那么它将在后台运行。因此,为了使它在后台运行,我没有在父元素中使用wait()
。
我的代码是这样运行的,当我不使用&
-->ls
File1.c file2.c file.txt
-->
在接受下一个命令的用户输入之前打印-->
。
但是如果我在末尾使用&
,我刚刚尝试了ls
我的代码是这样的:
-->ls &
-->File1.c file2.c file.txt
我不知道为什么-->
符号在下一行不打印在这种情况下。ls执行速度快还是代码问题?
当使用&
时,我希望输出看起来像这样
-->ls &
File1.c file2.c file.txt
-->
虽然我既没有看到你的代码也没有看到你使用的平台,但似乎进程是按照不同的顺序调度的,这取决于在后台或前台运行。
如果您想同步进程,您可以建立某种进程间通信或使用确定性调度器。后者无疑是一种过度的、不可行的方法。
我建议等待进程结束或使用管道。