2010-07-12 33 views
1

我正在用c代码做一些文件IO。我在我的文件中有一个特定的模式。我可以通过shell命令cat abc.txt | grep abc | wc -l来验证。当我使用System()执行相同的命令时,它会给出正确的输出,但我不知道如何将其输出转换为变量并将其与我的c代码本身进行比较。如何读取系统输出('ls')?

我试着看看建议使用WEXITSTATUS()的手册页。这实际上会返回执行状态而不是输出。

F1!

+3

请注意,不要分析'ls'的输出。并且请注意,比通过'system()'调用shell的文件IO有更好的选择。 – Stephen 2010-07-12 19:25:19

+0

“F1”是什么意思? – bk1e 2010-07-13 06:23:55

回答

7

你不想要system(3)。尝试popen(3)和朋友。

+0

+1这里是这个http://www.metalshell.com/source_code/23/Popen.html – DRL 2010-07-12 19:25:08

+0

的一个例子他们有同样的问题,调用shell? – Tom 2010-07-12 19:25:59

+0

@Tom我会认为唯一的主要问题是如果程序请求执行不在调用进程的$ PATH – DRL 2010-07-12 19:28:31

1

什么grep和wc正在做的是读取STDIN文件句柄作为管道的一部分|运营商。