Помогите с PIPE
Привет всем!
Если создать анонимное соединение PIPE (c помощью pipe + Fork + execl…):
Это псевдокод (просто для информации) , так что не пинайте пожалуйста:
pipe(&iReadPipe);
pipe(&iWritePipe);
pid = fork()
If (pid == 0) {
close(iWritePipe[1]);
close(iReadPipe[0]);
dup2(iWritePipe[0], STDIN_FILENO);
close(iWritePipe(0));
dup2(iReadPipe[1], STDOUT_FILENO);
close(iReadPipe[1]);
execl(szCmd, szCmd, NULL);
}
if pid > 0 {
pIn = fdopen(iReadPipe[0], "r");
pOut = fdopen(iWritePipe[1], "w");
setvbuf(pIn, NULL, _IONBF, 0);
setvbuf(pOut, NULL, _IONBF, 0);
}
то текстовые сообщения можно отправлять и принимать между процессами.
Однако если дочерний процесс ждет ожидание клавиши в терминале , то из родительского процесса невозможно производить ввод\вывод по трубам. Попытка вводить что-то в терминал бесполезна , похоже блокируется любое действие по трубам.
Мне нужно:
дочерний процесс ждет ожидания какой-то клавиши или вводимого текста с клавиатуры. Родительский процесс должен послать нажатия клавиш дочернему процессу и дочерний мог принять.
Именованные PIPE мне не подходят , поскольку приложение с которым будет устанавливаться связь является сторонним.
Подскажите как правильно сделать.