shell 命令在 linux 守护进程中

shell command inside the linux daemon

我写了daemon in C/C++ in linux。 现在我想在守护进程中获取 ls -l (列表目录)命令的输出并将命令输出写入文件。

我知道如何从我的守护程序写入文件,但是,

我不知道如何执行 ls -l 命令并在缓冲区中获取输出。

这是代码...

   /* Create a new SID for the child process */
    sid = setsid();

    if (sid < 0) {
      /* Log any failures here */

      ofs << "set sid : fail";
      ofs.close();
      exit(EXIT_FAILURE);
    }

        ofs << "\nchdir :" << chdir(filePath) << "\n";

    /* Change the current working directory */
    if ((chdir(filePath)) < 0) {
      /* Log any failures here */

      ofs << "chdir : fail";
      ofs.close();
      exit(EXIT_FAILURE);
    }

    /* Close out the standard file descriptors */
    close(STDIN_FILENO);
    close(STDOUT_FILENO);
    close(STDERR_FILENO);       

        while(1){
            //here I want to execute the ls -l and get output of the command
        }

您可以使用 popen 执行 shell 命令和 return 作为管道的输出:

#include <stdio.h>
FILE* pipe = popen("ls -l", "r");
if (!pipe) return "ERROR";

您还可以使用 system 来执行任何 shell 命令:

#include <stdlib.h>
int system(const char *command);

要获取 ls -l 的输出,将其转发到文件 ls -l >> myls.log 而不是读取该文件。

system("ls -l >> myls.log");