Bash 扩展在 popen 中不起作用

Bash expansion does not work in popen

我有一大 collection 个文件,从 file1.txtfile1000000.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 膨胀不能通过管道工作?

这里有什么解决方案?

感谢@Burhan Khalid 和@hobbs。似乎 popen 没有使用 bash 作为管道。为了使用 bash,我将 popen 行修改为:

FILE* pipe = popen("exec bash -c 'cp files/file{100..102}.txt filesCopy'", "r");

扩展现在工作正常。