【发布时间】:2014-06-12 21:19:40
【问题描述】:
在 C 程序中,假设我想使用 Exec 函数来执行给定的程序,例如,如果我只想尝试 ls -l 我会做类似的事情
args[0]="ls";
args[1]="-l";
args[2]=NULL;
...
execvp("ls", args);
一切都很好。现在,如果我还想将重定向添加到文件(或 stderr)怎么办? 我被卡住了,很明显将 >log.txt 作为数组中的第三个条目添加是行不通的,但我不知道如何继续。
另外,如果我想传递一些输入参数怎么办?如果我想执行一个像“gcc -o out in redirection>log.txt”这样的GCC命令怎么办?
[评论更新:]
这是一个模拟shell的C程序,可以“运行字符串”,字符串包含命令、参数列表、输入和重定向。
【问题讨论】:
-
"如果我想传递一些输入参数怎么办?" -
args数组不是为了正是那个目的吗? (如果你想管道文本进出stdin/stdout,你需要popen()。) -
@OliCharlesworth 是否保证
freopen之后不仅流而且文件描述符都相同?