用write替换printf进行信号处理

问题描述 投票:1回答:1

我刚刚发现printf在信号处理程序中不安全。所以我尝试使用write函数打印到控制台,但它不起作用。例如,我如何使用write()函数来执行类似这样的操作printf("ID: %d Exit: %d", x, y);但是我对如何在write函数中使用格式说明符感到困惑。任何帮助将非常感激。

c linux
1个回答
1
投票

write函数不支持使用格式说明符。它只需要指向给定大小的内存缓冲区并直接写入字节。

你可以安全地使用sprintf函数来构造一个字符串,然后将该字符串传递给write

char str[100];
sprintf(str, "ID: %d Exit: %d", x, y);
write(1, str, strlen(str));
© www.soinside.com 2019 - 2024. All rights reserved.