Simple Signals - C programming and alarm function

后端 未结 4 1577
挽巷
挽巷 2020-12-01 04:39
#include  
#include  


void  ALARMhandler(int sig)
{
  signal(SIGALRM, SIG_IGN);          /* ignore this signal       */
  printf(\"H         


        
4条回答
  •  天命终不由人
    2020-12-01 05:14

    You're forgetting to set the alarm handler initially. Change the start of main() like:

    int main(int argc, char *argv[])
    {
       signal(SIGALRM, ALARMhandler);
       ...
    

    Also, the signal handler will probably print nothing. That's because the C library caches output until it sees an end of line. So:

    void  ALARMhandler(int sig)
    {
      signal(SIGALRM, SIG_IGN);          /* ignore this signal       */
      printf("Hello\n");
      signal(SIGALRM, ALARMhandler);     /* reinstall the handler    */
    }
    

    For a real-world program, printing from a signal handler is not very safe. A signal handler should do as little as it can, preferably only setting a flag here or there. And the flag should be declared volatile.

提交回复
热议问题