Там будет следующий код:Передача данных на стандартный ввод другого процесса ожидания на ppoll
#include <poll.h>
int main(int argc, char *argv[])
{
pollfd pd;
pd.fd = 0;
pd.events = POLLIN;
int ret = ::ppoll(&pd, 1, 0, 0);
return 0;
}
Это должно ждать некоторых данных о стандартном вводе и просыпается при появлении данных.
Запуск программы таким образом, кажется, что ppoll пробуждается (передача данных на стандартный ввод через трубку):
$ echo 1 | ./main
$
Однако посылая что-то процесс из другой оболочки не просыпаются ppoll:
Первая оболочка:
$ ./main
Вторая оболочка:
$ echo 1 > /proc/$(pgrep main)/fd/0
После этого я просто вижу, что в первой оболочке напечатан 1
, но ppoll не проснется. Как правильно отправлять данные в stdin процесса из другой оболочки, чтобы ppoll проснулся?
Я не уверен, что ваш вопрос ясен. Когда вы говорите * «отправка чего-то в процесс из другой оболочки» * вы имеете в виду от другого 'tty'? Если это так, у них совершенно разные «stdin». –