Я строю модель клиент / сервер, но использую сокеты, использую именованные каналы, с помощью mkfifo ().
Клиент записывает вывод в конвейер имен, и я считываю ввод на моем сервере, используя:
while ((n = read(fd_in, &newChar, 1)) == 1) { /* ... */ }
Я читаю по одному символу за раз, пока не встретлю два символа: <'CR'> <'LF'>. Я хотел бы сделать мой код таким образом, чтобы, если клиент через некоторое время, возможно, не завершился с <'CR'> <'LF'>, я мог отменить его и перейти к другому клиенту, иначе следующий клиент ждать, может быть, бесконечно.
Есть ли способ прекратить выполнение read ()? Если он не вернулся через 2 секунды, я мог бы сказать прерывание чтения и отбросить ранее прочитанные символы и начать чтение снова, пожалуйста?
Спасибо за вашу помощь,
Jary