Я пишу код C для доступа к файловому паролю и распечатываю его содержимое за строкой (на самом деле это std-поток процесса, который был popen() - ред). Я придумал SSS (просто еще глупый) способ доступа к файлу:Как сделать управляемый событиями диск IO в C
static int this_event_handler(struct msg) {
...
pFile = popen ("some command");
while (fgets (mystring , 100 , pFile) != NULL) {
puts (mystring);
}
...
}
Я знаю, что этот код блокирует цикл событий и последующие сообщения на сервер не будут полезными. Итак, есть ли хороший способ справиться с этим, не блокируя цикл событий?
Например, я ищу метод, который прослушивает поток, как событие, и генерирует событие всякий раз, когда новая строка записывается/читается (без создания нового потока).
Я думаю, что я должен был сказать, что без создания нового потока. Эта программа основана на событиях, и запуск нового потока не является благоприятным. – orezvani
Вы можете попробовать [Linux aio] (http://man7.org/linux/man-pages/man7/aio.7.html). Это немедленно вернется. – Roger
Не существует конфликта между управляемой событиями логикой и новым потоком. Новый поток или получение потока из пула потоков позволит вашему коду работать без блокировки. Ты это пробовал? Или просто ваша мысль? – Roger