Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C代码中编写shell“&”?_C_Shell_Unix_Exec_Fork - Fatal编程技术网

如何在C代码中编写shell“&”?

如何在C代码中编写shell“&”?,c,shell,unix,exec,fork,C,Shell,Unix,Exec,Fork,在为我的问题做了很长时间的研究之后,我真的不知道如何解决它。 我的问题是,我需要这样的C源代码: ls& 如果我像这样编写代码,“ls-l”将被执行,但它并没有分叉到后台 它只是一个示例“ls-l”,也可以是“xournal&;”libreoffice&'或类似的东西。 我的主要问题是,我不知道如何用C编写“&”。 有人能为我提供一个提示或解决方案吗?当您执行另一个程序时,您需要调用以下函数: new_pid = fork(); exec(...); //in the child only 如

在为我的问题做了很长时间的研究之后,我真的不知道如何解决它。 我的问题是,我需要这样的C源代码:

ls&

如果我像这样编写代码,“ls-l”将被执行,但它并没有分叉到后台

它只是一个示例“ls-l”,也可以是“xournal&;”libreoffice&'或类似的东西。 我的主要问题是,我不知道如何用C编写“&”。
有人能为我提供一个提示或解决方案吗?

当您执行另一个程序时,您需要调用以下函数:

new_pid = fork();
exec(...); //in the child only
如果要等待新进程结束,即不指定调用的(&U)

waitpid(new_pid, ...);
这样,您的shell将阻塞,直到启动的过程完成

如果您不想等待,但只需继续操作shell,即指定&您只需不调用waitpid即可。

使用systemls&


如果您解释了为什么要在后台运行某个程序,这会有所帮助。

它是美式键盘上的+7。如果您只是搜索fork和exec函数族,则有许多程序使用fork和exec函数族。@H2CO3+6在瑞典语关键字上:Google fork系统调用。很高兴您不必编写代码:{:|:&}:
waitpid(new_pid, ...);