I am doing some file IO with c code. I have a particular pattern in my file. I can verify this by a shell command cat abc.txt | grep abc | wc -l
. When I execute
You can try:
...
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{
...
This will redirect output from command executed by system() to your "output" file.
What grep and wc are doing are reading the STDIN file handle as part of the pipe | operator.
You don't want system(3)
for that. Try popen(3)
and friends.