我刚刚发现printf在信号处理程序中不安全。所以我尝试使用write函数打印到控制台,但它不起作用。例如,我如何使用write()函数来执行类似这样的操作printf("ID: %d Exit: %d", x, y);
但是我对如何在write函数中使用格式说明符感到困惑。任何帮助将非常感激。
write函数不支持使用格式说明符。它只需要指向给定大小的内存缓冲区并直接写入字节。
你可以安全地使用sprintf
函数来构造一个字符串,然后将该字符串传递给write
:
char str[100];
sprintf(str, "ID: %d Exit: %d", x, y);
write(1, str, strlen(str));