Я посмотрел на все, и я не могу понять, как это сделать.Передача pipefd через execlp в C
У меня есть родительский процесс, который создал трубу()
Теперь я хочу, чтобы вилка() родитель, а затем функции имеют() и передать трубу() к новой программе в качестве аргумента командной строки ,
Затем изнутри новой программы мне нужно уметь читать pipefd.
Я видел кучу вещей о том, как это сделать изнутри того же процесса, но не о том, как это сделать.
Редактировать: Первоначальная публикация/была довольно расплывчатой.
То, что я до сих пор:
int pfd[2];
if(pipe(pfd) == -1) {
perror("Creating pipe\n");
exit(1);
}
pid_t pid = fork();
if(pid == -1) {
fprintf (stderr, "Initiator Error Message : fork failed\n");
return -1;
}
else if(pid == 0) { // child process
close(pipe0[1]); // close(write);
execlp("program", "program", pipe0[0], NULL);
}
, но тогда я не понимаю, что я должен сделать из внутри «программы», чтобы получить FD. Я пытался назначить его на всевозможные вещи, но все они кажутся ошибкой.
Спасибо заранее!
Что мешает вам делать что именно? Где у вас проблемы? Знаете ли вы, что делает 'dup2' и как его использовать? –
Я не могу понять, как взять fd в дочерней программе. – lexIcon
Что вы имеете в виду, передав fd в качестве аргумента? –