我有一个系统("sudo apt-get update | sudo apt-get -y install apache2 zip unzip"); 等,但是它一次完成所有相同的命令?,我怎么做才能一个接一个地完成?还有一些人可能会要求用户从apt-get输入信息,我该怎么做才能显示?
管道符(\n |)意味着输出来自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");
Run Code Online (Sandbox Code Playgroud)
请注意,当您调用system()时,程序不会恢复,直到您启动的进程退出,这意味着第一个调用将执行,然后是第二个调用.
或者更换管道&&(不一定保证可以工作,但它确实应该在任何Linux系统上):
system("sudo apt-get update && sudo apt-get -y install apache2 zip unzip");
Run Code Online (Sandbox Code Playgroud)
这意味着只有在左侧退出而没有错误时才会执行命令的右侧(技术上,退出状态为0).
您也可以用分号(;)替换管道,它应该按顺序执行两个命令,而不管第一个命令的退出状态如何.