当我从 C 程序执行“bash -c ...”时重定向输出

当我从 C 程序执行“bash -c ...”时重定向输出

假设我有一个 C 程序,我想在其中执行 shell 命令并将其输出重定向到文件,方法是使用标准库系统功能。

system("bash -c \"echo $HOME\" > a.txt");

现在这只是为了说明,实际上是行不通的。如何使输出重定向起作用?因为我从函数调用 bash,所以我需要进程本身来执行重定向。

答案1

system函数已经调用了 shell。这可以是任何 sh (Bourne/POSIX) shell,并不总是 bash。除非您需要使用特定于 bash 的构造,否则不需要在其中调用另一个 shell。如果您正在执行简单的命令,只需在命令行中包含重定向即可。如果您正在执行更复杂的命令,则可能需要将整个命令序列放在大括号中。

system("echo hello >somefile");
system("{ echo foo; echo bar; } >somefile");

相关内容