假设我有一个 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");