Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.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 分离使用system()调用的链接命令_C_Linux_Command Line_Exec - Fatal编程技术网

C 分离使用system()调用的链接命令

C 分离使用system()调用的链接命令,c,linux,command-line,exec,C,Linux,Command Line,Exec,我熟悉使用system从C中执行shell命令,如下所示: system("ifup -a\n"); 并使用符号And对它们进行分叉(以便system()调用立即返回): system("ifup -a &\n"); system("ifdown eth0 && ifup -a\n"); 并使用双符号依次链接两个命令: system("ifup -a &\n"); system("ifdown eth0 && ifup -a\n"); 但

我熟悉使用system从C中执行shell命令,如下所示:

system("ifup -a\n");
并使用符号And对它们进行分叉(以便system()调用立即返回):

system("ifup -a &\n");
system("ifdown eth0 && ifup -a\n");
并使用双符号依次链接两个命令:

system("ifup -a &\n");
system("ifdown eth0 && ifup -a\n");
但是,在一个链的末端添加一个符号和会运行整个链并立即返回system()调用吗?例如:

system("ifdown eth0 && ifup -a &\n");
单符号AND分叉是整行还是最后一个命令

还是有更好的方法来实现这一点?我们似乎有一个复杂的网络环境,需要这样做:

system("ifdown eth0 && sleep 2 && ifup -a &\n");

让事情有时间完全停止和完全恢复,但调用函数确实希望立即返回。

是的,在末尾添加一个符号将使system()立即返回。

是的,它确实如此,而且很容易测试,这是您自己应该做的,不要问这个问题。@pelya-我意识到我可以测试它,但如果能找出它是否是有文档记录的行为,而不仅仅是“在这个特定的构建中对我有效”,或者是否有一些更优雅或更合适的解决方案,就像Linux中经常出现的那样。从“man system”,system()调用相当于fork()和execl(“/bin/sh”、“sh”、“-c”、command,(char*)0);在任何类似Unix的操作系统上都应该以类似的方式工作。在Windows上则不然。