16.05.2015 Views

Working with the Unix OS

Working with the Unix OS

Working with the Unix OS

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Processes I<br />

- "alarm" after a period of time<br />

- arbitrary signal to ano<strong>the</strong>r process via "kill<br />

! related to terminal interaction<br />

- hang up a terminal<br />

- presses "break" or "interrupt"<br />

keys<br />

! tracing execution of a process<br />

A process can remember different types of<br />

signals, but it has no memory of how<br />

many signals it receives.<br />

The kernel handles signals only when a<br />

process returns from kernel mode to user<br />

mode.<br />

Figure 24. Checking and Handling Signals<br />

algorithm issig /* test for receipt of signals */<br />

input: none<br />

output: true, if process received signals that it does not ignore, false o<strong>the</strong>rwise<br />

{<br />

while (received signal field in process table entry not 0)<br />

{<br />

find a signal number sent to <strong>the</strong> process;<br />

if (signal is death of child)<br />

{<br />

if (ignoring death of child signals)<br />

free process table entries of zombie children;<br />

else if (catching death of child signals)<br />

return (true);<br />

}<br />

else if (not ignoring signal)<br />

return (true);<br />

turn off signal bit in received signal field in process table;<br />

}<br />

return (false);<br />

}<br />

Figure 25. Recognizing Signals<br />

107

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!