Я пытаюсь создать функцию, которая принимает команду оболочки в качестве аргумента, использует 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?
}
Я не уверен, как вернуть указатель файла, который можно использовать для чтения вывода команды. Также это правильный способ выполнить команду на оболочке?
пс. Я читал о popen, но есть веская причина, по которой я не могу его использовать, поэтому я должен сам реализовать эту функцию.
Спасибо