2011-05-09 13 views

回答

3

Here是與被認爲是安全用於信號處理的所有功能的表:

「下表定義了一組 函數應是 折返或不可中斷由 信號和應 異步信號安全「。

puts似乎並沒有在該列表中,但是每this,它被認爲是折返,但不是異步安全的,也許是爲什麼它不在上述名單。

+1

嗯,這裏是puts'和'write''之間的區別? – 2011-05-09 09:52:05

+0

@Let_Me_Be:不確定,但'puts()'是stdio的一部分,它本身不是異步信號安全的。可能,但不限於,輸出緩衝等功能。 – 2011-05-09 10:01:20

+0

@Christian是啊,你是對的,我完全忘了整個stdio在'FILE'結構而不是文件描述符之上工作。 – 2011-05-09 10:06:03

1

不,它不是,你可以使用,無論write(),這是異步信號安全的,輸出信息從信號處理程序:

#include <unistd.h> 

const char* msg = "The message to print."; 
write(STDOUT_FILENO, msg, strlen(msg));