Если файловый дескриптор, используемый с write()
, не предназначен для FIFO, канал (, как предложено Кеном Блумом ), асинхронный сокет (, как предложено mark4o ) и не вызывает сигнала (т. Е. SIGIO
), я полагаю, вы могли бы использовать raise()
для отправки сигнала текущему процессу после записи данных в буфер. В зависимости от того, чего вы на самом деле пытаетесь достичь, это может быть не лучшим решением.
Обновление
Если я вас правильно понимаю, вы хотите записать в файл, сгенерировать сигнал SIGIO по завершении записи, а затем прочитать данные обратно из обработчика сигнала. Кажется, вы хотите использовать асинхронный ввод / вывод для файла.
В Асинхронный ввод / вывод в Linux или: Добро пожаловать в ад , автор описывает различные методы асинхронного ввода / вывода в Linux, включая использование сигнала SIGIO. Техника сигналов SIGIO не может использоваться с обычными файлами.
Несмотря на то, что автор ранее упомянутой статьи не особо задумывался о POSIX AIO API, предоставляемом в ядре 2.6, вы все равно можете рассмотреть его, так как он может использоваться для уведомления о завершении асинхронного чтения / записи. в обычный файл с помощью сигналов и обратных вызовов функций.
В Повышение производительности приложений с помощью асинхронного ввода-вывода . Автор представляет обзор основных моделей ввода-вывода Linux, прежде чем вводить API-интерфейс AIO.