замена printf на write для обработки сигналов - PullRequest
0 голосов
/ 25 февраля 2019

Я только что узнал, что printf небезопасен в обработчике сигналов.Поэтому я попытался использовать функцию записи для печати на консоль, но она не сработала.Например, как бы я использовал функцию write (), чтобы сделать что-то подобное printf("ID: %d Exit: %d", x, y); Но я не совсем понимаю, как использовать спецификаторы формата в функции записи.Любая помощь будет высоко ценится.

1 Ответ

0 голосов
/ 25 февраля 2019

Функция записи не поддерживает использование спецификаторов формата.Он просто берет указатель на буфер памяти заданного размера и записывает байты напрямую.

Вы можете безопасно использовать функцию sprintf для создания строки, а затем передать эту строку в write:

char str[100];
sprintf(str, "ID: %d Exit: %d", x, y);
write(1, str, strlen(str));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...