Re[7]: Сходи хоть на одно собеседование, узнаешь о себе мног
От: cppguard  
Дата: 21.10.22 03:15
Оценка: 4 (1)
Здравствуйте, vsb, Вы писали:

vsb>Разновидность этого варианта — запустить второй процесс, в котором записывать в файл в обычном виде (аналог "cat > file") и через pipe в stdin ему данные для записи передавать. На pipe уже можно неблокирующий режим включить по идее. Это прям совсем юниксово, хотя лишний процесс это наверное чуть больше накладных расходов, чем поток.


vsb>Если выпендриваться, я бы через io_uring попробовал, вроде он поддерживает асинхронную запись в файлы.


vsb>А как правильно? Я вообще в системном программировании ни гу-гу. Наверное через какие-то ioctl-ы должен быть доступ к такой информации, я бы в этом направлении ещё покопал.


Ну всё верно =) Обычным pipe-ом решается, дешёво и сердито, и замеры производительности показывают, что расходы почти нулевые. Я привёл этот пример, чтобы показать, что незачем наизусть знать POSIX, если под рукой есть справка, гораздо важнее уметь применять инструменты с умом. Кстати, если выпендриваться, то надо сдобрить решение vmsplice, это такой аналог splice, но для пользовательской памяти. Но тогда код уже непортируемый получится.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.