我需要在C ++中运行以下命令。
cd ../ && tar cf files1.tar files && cp files1.tar files1cp.tar && tar xf files1cp.tar
popen方法完成工作:
FILE* pipe = popen("cd ../ && tar cf files1.tar files && cp files1.tar files1cp.tar && tar xf files1cp.tar", "r");
if (!pipe)
throw("ERROR!");
char buffer[128];
string result = "";
while(!feof(pipe))
{
if(fgets(buffer, 128, pipe) != NULL)
result += buffer;
}
pclose(pipe);
根据手册页,popen()函数通过创建管道,分叉和调用shell来打开一个进程。有没有办法禁用分叉,以便popen等待整个命令完全执行,然后将控件放到代码中的下一行。