使用popen并等待命令完全运行

时间:2015-01-18 01:37:35

标签: c++ linux popen

我需要在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等待整个命令完全执行,然后将控件放到代码中的下一行。

0 个答案:

没有答案