Предистория
У меня возникла потребность писать скрипты не на таких скриптовых языках как bash, потому что мне не нравилась не полнота возможностей и подводные камни в нём, вместе со сложной документацией. Я начал искать альтернативы, нашёл nushell, избавление от подводных камней обеспечилась, потому что это современная оболочка, но не полнота возможностей, и незадокументировать некоторых вещей может приводить к неожиданностям. Потом до меня дошло что можно использовать любой язык программирования, всё что мне нужно это библиотека для вызова дочерних процессов, для меня это казалось магией, которой обладают лишь командные оболочки. Ну я выбрал rust, там как раз ещё и с оффициальной документаций всё в порядке. Но потом я выбрал node.js, потому что там прототипы, и мне кажеться это очень гибко, и не надо с типами шаманить. Меня на node перенял zig с его гибкой системой типов. Но zig нестабилен, поэтому пока оверхедные но доступные альтернативы, по типу node, может есть лучше, но я не нашёл
Суть вопроса
Я знаю что есть различные методы ipc. Я так понимаю stdout особо не считается за ipc, потому что stdout/stdin это просто файлы. Так вот мне интересно, можно ли организовать нормальное «одностороннее» ipc. Под односторонним я понимаю изменения в коде только родительского процесса. А дочерний лишь иногда пишет в stdout и через некоторое время завершается. Под нормальным я подразумеваю производительное. Ну то есть, если я правильно понял, stdout это файлы, а значит там идёт оверхед от записи и чтения с диска?
А ещё меня интересует как получать оповещение для родительского процесса, когда дочерний что-то написал в stdout. Просто в стандартной библиотеке rust можно читать из stdout только когда процесс завершен, а я например видел, что есть же такие процессы, как архиваторы, и они на протяжении своей работы выводят прогресс выполненной операции. Когда я спросил про это, мне порекомендовали крейт mio, там я познакомился с epoll, это такая штука, которая позволяет получать от ОС оповещение когда в stdout, то есть в файл, была произведена запись и можно читать новые данные
Когда я спросил как работает в Node.js child.stdout.on("data", ...
и какой метод оповещения используется в случае с stdout, мне сказали что я дурак и вообще спрашиваю какую-то чушь. Я ведь знаю что кроме epoll есть poll, select. А на windows и mac os ещё другие методы, ведь это платформозависимая вещь.