shell守护进程中的shell命令

我已经用daemon in C/C++ in linux编写了daemon in C/C++ in linux 。 现在我想要在守护进程中获取ls -l (list directory)命令,并将命令输出写入文件。

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

我不知道如何执行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 } 

您可以使用执行shell命令的popen并将输出作为管道返回:

 #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");