我正在用c代码做一些文件IO。我的文件中有一个特定的模式。我可以通过shell命令cat abc.txt | grep abc | wc -l
来验证这一点。当我使用System()
执行相同的命令时,它会给出正确的输出,但我不知道如何将其输出变为变量并将其与我的c代码本身进行比较。
我尝试查看使用WEXITSTATUS()
建议的手册页。这实际上返回执行状态而不是输出。
F1 !!
答案 0 :(得分:7)
您不希望system(3)
。试试popen(3)
和朋友。
答案 1 :(得分:1)
grep和wc正在做的是读取STDIN文件句柄作为管道的一部分操作
答案 2 :(得分:0)
您可以尝试:
...
pid_t pid = fork();
if(pid == 0){
int fd = open("output", O_RDWR | O_CREATE);
close(1);
(void) dup(fd); // this will return 1
system(your_cmd);
// read output from fd
// close fd
// exit
}
else{
...
这会将输出从system()执行的命令重定向到您的“输出”文件。