4

int puts(const char*);リエントラントですか?シグナルハンドラに安全に入れることはできますか?

4

2 に答える 2

4

以下は、シグナル処理に対して安全であると考えられるすべての関数の表です。

「次の表は、再入可能またはシグナルによる割り込み不可であり、非同期シグナルセーフである一連の関数を定義しています。」

putsそのリストにはないようですが、これによると、再入可能であると見なされますが、非同期セーフではないと見なされます。おそらく、上記のリストにない理由です。

于 2011-05-09T09:47:58.480 に答える
2

いいえ、そうではありませんが、write()非同期シグナルセーフである を使用して、シグナルハンドラーからメッセージを出力できます。

#include <unistd.h>

const char* msg = "The message to print.";
write(STDOUT_FILENO, msg, strlen(msg));
于 2011-05-09T09:59:11.083 に答える