how to read output of system('ls')?

前端 未结 3 353
情深已故
情深已故 2021-01-16 12:56

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

相关标签:
3条回答
  • 2021-01-16 13:30

    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.

    0 讨论(0)
  • 2021-01-16 13:31

    What grep and wc are doing are reading the STDIN file handle as part of the pipe | operator.

    0 讨论(0)
  • 2021-01-16 13:38

    You don't want system(3) for that. Try popen(3) and friends.

    0 讨论(0)
提交回复
热议问题