В вашем примере программы у вас есть гонок данных на каждую из ваших глобальных переменных, кроме pI
и sI
.Вы читаете их из одной ветки, а пишете им из другой.Это приводит к неопределенному поведению, означающему, что любой результат, который вы получаете из этой программы, не имеет смысла.
Обе функции socket
и pipe
являются поточно-ориентированными, а также безопасно использовать от асинхронных обработчиков сигналов.Как ни странно, справочные страницы не содержат такой информации, а онлайн-документация -.