我已经用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");