我有一个系统(“sudo apt get update | sudo apt get-y install apache2 zip unzip”)等,但它同时执行所有相同的命令?,我该怎么做才能一个接一个地完成?,也有一些可能会要求用户从apt get输入信息,我如何允许此显示?

最佳答案

管道字符(|)意味着来自sudo apt-get update的输出被管道传输到sudo apt-get -y install apache2 zip unzip的输入中。虽然这实际上没有任何意义,但它确实意味着两者同时推出,这不是你想要的。
用两个单独的system()调用替换单个调用:

system("sudo apt-get update");
system("sudo apt-get -y install apache2 zip unzip");

注意,当你调用Sype()时,你的程序直到你启动的进程退出才恢复,所以这意味着第一个调用将被执行,第二个调用将被执行。
或者将管道替换为&&(虽然在任何Linux系统上都应该这样做,但并不一定保证它能正常工作):
system("sudo apt-get update && sudo apt-get -y install apache2 zip unzip");

这意味着只有当左边没有错误(技术上,输出状态为0)时,命令的右端才会执行。
您也可以用分号替换管道(;),而不管第一命令的退出状态如何,都应该按顺序执行这两个命令。

10-07 13:37
查看更多