我试图通过C中的程序而不是使用命令行来执行grep -o colour colourfile.txt | wc -w > newfile.txt
。
这是我到目前为止所拥有的:
#include <stdlib.h>
#include <unistd.h>
int main (void) {
int fd[2];
pipe(fd);
if (fork()) {
// Child process
dup2(fd[0], 0); // wc reads from the pipe
close(fd[0]);
close(fd[1]);
execlp("wc", "wc", "-w", ">", "newfile.txt", NULL);
} else {
// Parent process
dup2(fd[1], 1); // grep writes to the pipe
close(fd[0]);
close(fd[1]);
execlp("grep", "grep", "-o", "colour", "colourfile.txt", NULL);
}
exit(EXIT_FAILURE);
}
答案 0 :(得分:2)
if (fork()) {
的意思是parent process
而不是child process
,请参阅http://man7.org/linux/man-pages/man2/fork.2.html >
的{{1}}一样处理|
以下open()
可以工作:
code