我正在实现一个模拟真正的bash shell的minishell。我在背景中执行命令,例如ls &
。
我的第一种方法是以下(不起作用)
char *execArgs[] = { "ls", "&", NULL };
execvp("ls", execArgs);
然后,我尝试了另一种方法,修改fork()
的父进程,而不是等待它应该在后台运行。这里的问题是,它应该打印在后台运行的作业列表,以便在bash shell中模拟背景bahaviour,但命令jobs
未作为execvp()
的参数正确执行。
我的问题是,有没有更简单的方法在C中实现这种后台调用?如果没有,在我提到的任何一个选项中它失败了什么?
答案 0 :(得分:1)
您的示例失败的原因是
你可能想要的是
system("ls &");
阅读一本好的Unix书。您需要知道fork(),exec(),wait()等等。