我有file1.txt
到file1000000.txt
的大量文件,这些文件都存储在文件夹files
中。我需要将命令行中的一系列文件复制到文件夹filesCopy
。我使用bash扩展如下,一切正常:
cp files/file{100..102}.txt filesCopy
但是,通过popen使用相同的命令会给我错误。
FILE* pipe = popen("cp files/file{100..102}.txt filesCopy", "r");
if (!pipe)
throw("ERROR!");
char buffer[128];
string result = "";
while(!feof(pipe))
{
if(fgets(buffer, 128, pipe) != NULL)
result += buffer;
}
pclose(pipe);
这里有什么不对? bash扩展是否可能无法通过管道工作?
这里有什么解决方案?
答案 0 :(得分:2)
感谢@Burhan Khalid和@hobbs。似乎popen不使用bash进行管道。为了使用bash,我将popen行修改为:
FILE* pipe = popen("exec bash -c 'cp files/file{100..102}.txt filesCopy'", "r");
现在扩展工作正常。