Описание тега async-safe

2 ответа

Всегда ли небезопасно, когда я вызываю неасинхронную функцию из обработчика сигнала?

Я просто выясняю, могу ли я вызывать неасинхронную функцию в обработчике сигналов. Цитаты из справочного руководства по Linux (7): Если сигнал прерывает выполнение небезопасной функции, а обработчик вызывает небезопасную функцию, то поведение програ…
24 авг '15 в 15:14
3 ответа

Есть ли способ проверить, нахожусь ли я в обработчике сигналов?

Мне приходится работать над модулем регистрации, который можно вызывать из разных мест большого проекта. У меня проблема в том, что иногда модуль может вызываться из кода, выполняемого внутри обработчика сигнала. Обычно модуль регистрации включает д…
05 мар '10 в 21:06
2 ответа

Как управлять общим семафором POSIX с асинхронными сигналами в многопоточном приложении

Я должен написать потокобезопасную библиотеку, которая использует семафор POSIX (используется как мьютекс с начальным значением = 1) для синхронизации. Я обнаружил некоторые проблемы для правильного управления асинхронными сигналами. У меня есть при…
05 сен '12 в 10:31
1 ответ

Почему только асинхронные функции должны вызываться из обработчика сигнала?

Я понимаю, что из функции обработчика сигнала sigaction() Я должен вызывать только те функции, которые "безопасны для асинхронного режима". Но почему так?
22 сен '17 в 00:02
4 ответа

Вывести int из обработчика сигнала, используя функции записи или асинхронной безопасности

Я хочу напечатать номер в журнал или на терминал, используя write (или любая асинхронно-безопасная функция) внутри обработчика сигнала. Я бы предпочел не использовать буферизованный ввод / вывод. Есть ли простой и рекомендуемый способ сделать это? Н…
28 янв '13 в 23:13
1 ответ

Чтение размера тега MP3 IDV2

Я пытаюсь прочитать размер тега ID3V2. мой код должен хранить первый заголовок, который содержит идентификацию, версию, флаги и размер в этой структуре. Код копирует от 0 до 9 и сохраняет его здесь typedef struct { uint32_t id:24; //"ID3" uint16_t v…
11 дек '16 в 15:50
3 ответа

Использование sig_atomic_t в функции маски сигнала linux

Недавно я изучал книгу под названием Advanced Linux Programming и столкнулся с вопросом: в книге сказано, что вы должны использовать sig_atomic_t тип переменной, чтобы быть уверенным, что если вы установите глобальный флаг или счетчик в функции обра…
08 окт '10 в 10:02
4 ответа

Мне нужен список асинхронно-безопасных функций от glibc

Оболочки не syscall, но что-то вроде snprintf(), dprintf()
06 янв '10 в 13:29
3 ответа

Является ли доступ только для чтения к вектору (vector::operator[] и vector::size()) асинхронно-безопасным?

Моя программа должна иметь доступ только для чтения к содержимому vector<string> в обработчике сигнала для SIGINT, (Альтернативой является использование массива C-строк фиксированного размера с фиксированной длиной.) Программа предназначена дл…
07 окт '14 в 17:59
2 ответа

Влияют ли функции, которые не определены как асинхронные, такие как mmap(2), на другие асинхронные функции, вызываемые в обработчике сигналов?

Я делаю библиотеку, которая внедряется в процессы и переопределяет некоторые функции, такие как open (2) для выполнения некоторых задач перед вызовом real open (2). Моя библиотека будет вызывать mmap (2). Поскольку open (2) асинхронно безопасен, воз…
24 май '19 в 22:02