мне нужна помощь с msgrcv ... Мне нужно, чтобы иметь возможность получать сообщения, как это:C - сделать msgrcv сосуществовать с сигналами
while(1){
int status = msgrcv(qid, &msg, sizeof(msg.data), user_id,0)
if(status < 0) { perror("something wrong..."); exit(1); }
}
А также где-то по коду:
void stuff_to_do(int signal){
// ....
}
//...
signal(SIGQUIT, stuff_to_do);
Но я получаю прерванный системный вызов, возможно потому, что сигнал убивает msgrcv или что-то в этом роде. Как я могу это решить? Должен ли я fork() и выполнять msgrcv в одном процессе и делать материал на другом процессе? Или есть лучший способ? Спасибо за помощь!
Не пытайтесь 'fork()' и делить задачи, которые только что усложнят. Какой бы процесс, который вызывает 'msgrcv()', все равно может получать сигналы и прерываться. – e0k
@ e0k Да, это правда ... Я думал, что это решит, но это не будет, так как мне нужно остановить время (1) сигналом. Благодаря! –