我正在尝试创建一个函数,它以shell命令作为参数,使用fork来生成一个新进程,执行该命令。我还想重定向命令的标准输出,以便调用函数的人可以使用FILE*指针读取它。
static FILE* runCommand(char* command){
int pfd[2];
if(pipe(pfd)<0)
return NULL;
if(pid=fork()==0){ //child
close(pfd[0]);
dup2(pfd[1],1); //redirect output to pipe for writing
execlp(command,(char*)0);
}
close(pfd[1]);
//return a file pointer/descriptor here?
我不确定如何返回一个文件指针,以便用于读取命令的输出。同时,这是否是在shell上执行命令的正确方式?
附:我了解了popen,但我无法使用它,因此必须自己实现此功能。
谢谢。