Talk:Handle a signal: Difference between revisions

From Rosetta Code
Content added Content deleted
(Error in C example)
 
m (→‎Error in C example: forgot my signature)
Line 1: Line 1:
== Error in C example ==
== Error in C example ==
The C example uses <code>printf</code> in the signal handler. However, printf isn't signal-safe, that is, if the signal happens during the printf call in the main program, it might fail. The correct way would be to set a flag of type <code>volatile sig_atomic_t</code> in the signal handler, and test that flag in the main program. Note that usleep returns when interrupted by a signal, so handling of that signal will not be delayed that way.
The C example uses <code>printf</code> in the signal handler. However, printf isn't signal-safe, that is, if the signal happens during the printf call in the main program, it might fail. The correct way would be to set a flag of type <code>volatile sig_atomic_t</code> in the signal handler, and test that flag in the main program. Note that usleep returns when interrupted by a signal, so handling of that signal will not be delayed that way. --[[User:Ce|Ce]] 08:38, 31 March 2009 (UTC)

Revision as of 08:38, 31 March 2009

Error in C example

The C example uses printf in the signal handler. However, printf isn't signal-safe, that is, if the signal happens during the printf call in the main program, it might fail. The correct way would be to set a flag of type volatile sig_atomic_t in the signal handler, and test that flag in the main program. Note that usleep returns when interrupted by a signal, so handling of that signal will not be delayed that way. --Ce 08:38, 31 March 2009 (UTC)