C 分离使用system()调用的链接命令
我熟悉使用system从C中执行shell命令,如下所示: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("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上则不然。