sh: Use sigaction instead of signal/siginterrupt combination.
This commit is contained in:
parent
41c8c6e876
commit
3f228d7484
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=199205
@ -244,7 +244,8 @@ void
|
|||||||
setsignal(int signo)
|
setsignal(int signo)
|
||||||
{
|
{
|
||||||
int action;
|
int action;
|
||||||
sig_t sig, sigact = SIG_DFL;
|
sig_t sigact = SIG_DFL;
|
||||||
|
struct sigaction sa;
|
||||||
char *t;
|
char *t;
|
||||||
|
|
||||||
if ((t = trap[signo]) == NULL)
|
if ((t = trap[signo]) == NULL)
|
||||||
@ -320,9 +321,10 @@ setsignal(int signo)
|
|||||||
case S_IGN: sigact = SIG_IGN; break;
|
case S_IGN: sigact = SIG_IGN; break;
|
||||||
}
|
}
|
||||||
*t = action;
|
*t = action;
|
||||||
sig = signal(signo, sigact);
|
sa.sa_handler = sigact;
|
||||||
if (sig != SIG_ERR && action == S_CATCH)
|
sa.sa_flags = 0;
|
||||||
siginterrupt(signo, 1);
|
sigemptyset(&sa.sa_mask);
|
||||||
|
sigaction(signo, &sa, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user