Я хочу напечатать номер в журнале или на терминале, используя write (или любую асинхронную функцию) внутри обработчика сигнала. Я бы предпочел не использовать буферизованный ввод-вывод.
Есть ли простой и рекомендуемый способ сделать это?
Например, вместо printf ниже я бы предпочел write (или любую функцию asyn safe).
void signal_handler(int sig)
{
  pid_t pid;
  int stat;
  int old_errno = errno;
  while((pid = waitpid(-1, &stat, WNOHANG)) > 0)
    printf("child %d terminated\n", pid);
  errno = old_errno;
  return;
}
Печатать строки легко. Вместо printf выше я могу использовать (без печати pid):
write(STDOUT_FILENO, "child terminated", 16);
