Я пытаюсь открыть дочерний процесс с помощью fork (), а затем выполнить execvp () - в другую программу.
Я также хочу, чтобы родительский процесс и дочерний процесс связывались друг с другом с помощью канала.
вот родительский процесс -
int pipefds[2];
pipe(pipefds); // In original code I check for errors...
int readerfd = pipefds[0];
int writerfd = pipefds[1];
if(pid == 0){
// Child
close(readerfd);
execvp("./proc2",NULL);
}
в программе 'proc2' я пытаюсь получить доступ к writerfd следующим образом-
write(writerfd, msg, msg_len);
но вместо этого я получаю ошибку времени компиляции -
msgstr "ошибка: d writerfd" не объявлен (первое использование в этой функции); "
почему это? Я прочитал здесь о переполнении стека, что «дескрипторы открытых файлов сохраняются при вызове exec». ссылка . разве я не смогу связаться с writerfd, если это так?
как я могу записать в этот файловый дескриптор дочерний процесс после использования execvp? Как правильно сделать это и где я могу прочитать об ответе (я смотрел, но я не нашел ..)?
Спасибо!