Portál AbcLinuxu, 13. května 2025 21:40
// cekani na signal SIGUSR1
sigemptyset(&block_mask);
sigaddset(&block_mask, SIGUSR1);
sigprocmask(SIG_BLOCK, &block_mask, &old_mask);
while (!usr1_go)
{
sigsuspend(&old_mask);
}
sigprocmask(SIG_UNBLOCK, &block_mask, NULL);
usr1_go = 0;
a jeste obsluha preruseni SIGUSR1:
void sigusr1(int sig)
{
usr1_go = 1;
}
Je to pozastaveni procesu a jeho cekani na prichod signalu SIGUSR1. Ja bych ale potreboval, aby program cekal jak na signal SIGUSR1, tak SIGUSR2 a na zaklade prichodu jednoho z techto dvou signalu by nejak pokracoval (if - else). Impementace tohoto problemu me vsak nenapada, muzete mi prosim poradit? Dekuji.
sigaddset (&block_mask, SIGUSR2); void sigusr1 (int sig) { sig_go = 1; } void sigusr2 (int sig) { sig_go = 2; }
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.