bash - C system() call parameter expansion -


i'm trying merge set of files using c system() call:

int main(int argc, char* argv[]) {   return system("cat output{1,2} > merged.out"); } 

the result is:

$ gcc test.c $ ./a.out cat: output{1,2}: no such file or directory 

it works if directly in bash:

$ ls output{1,2} output1  output2 $ cat output{1,2} 1,2 3,4 

how can enable parameter expansion in system() call?

the reason system uses /bin/sh, not expand braces. instance, try:

/bin/sh -c 'echo cat output{1,2}' 

and compare

/bin/bash -c 'echo cat output{1,2}' 

if must, like

system("/bin/bash -c 'cat output{1,2} > merged.out'"); 

but why not read both files , write output merged.out?


Comments

Popular posts from this blog

c# - Unity IoC Lifetime per HttpRequest for UserStore -

Change the color of an oval at click in Java AWT -

I am trying to solve the error message 'incompatible ranks 0 and 1 in assignment' in a fortran 95 program. -