POSIX: perror () - что означает «MT-Safe race: stderr»? - PullRequest
0 голосов
/ 04 июля 2018

Пожалуйста, кто-нибудь может помочь мне понять концепцию безопасности POSIX, особенно для perror(). На странице руководства указано, что perror() - это «MT-Safe race: stderr». Поскольку perror() выводит к стандартной ошибке, я хотел бы понять, что означает данное условие гонки для реализации.

Означает ли это, что вывод на stderr может быть смешанным, или есть другие вещи, о которых кто-то должен заботиться?

1 Ответ

0 голосов
/ 04 июля 2018

Это означает, что perror записывает в stderr, а stderr не является поточно-ориентированным. Состояние гонки означает, что вы можете получить чередующийся вывод, если несколько потоков записывают в stderr одновременно.

POSIX требует, чтобы большинство функций было поточно-ориентированным :

Все функции, определенные этим томом POSIX.1-2017, должны быть поточно-ориентированными, за исключением того, что следующие функции1 не обязательно должны быть поточно-ориентированными.

perror нет в этом списке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...