стандарты, которые я просматривал (C99 и POSIX), ничего не говорят о заблокированном или разблокированном вводе-выводе в отношении fwrite
.
В моей системе linux не очень точное упоминание блокировки на странице man
:
For non-locking counterparts, see unlocked_stdio(3).
и эффективно, есть fwrite_unlocked
функция. Стандартные разблокированные функции в POSIX: getc_unlocked()
, getchar_unlocked()
, putc_unlocked()
и putchar_unlocked()
.
Моя интерпретация заключается в том, что, вероятно, все буферизованные операции ввода-вывода в наборе man (3) заблокированы и что у вас очень мало стандартизированных интерфейсов для выполнения разблокированного ввода-вывода.
То, что эти вещи блокируют потоки, - это действительно хорошо, так как в противном случае вы могли бы получить беспорядочный вывод, когда несколько потоков пишут в stderr
, например,