title: Close FIFO After Signal SIGTERM Received
body: <p>just this short question: how do we close the FIFO file if we receive the SIGTERM and exit.
  If my file is a normal file, it works. But if it is a FIFO, it doesn't work.
  Any ideas? Thanks :)</p>
  
  <pre><code>/**
      with the help of these guys, 
      it is not a good approach to write it, 
      though it works. close(fd) is pointless here.
  **/
  
      FILE * myfile;
      int fd;
      void sig_handler(int signum) {
          if (signum == SIGTERM) {
              *close(fd);*
              fclose(myfile);
              printf("caught SIGTERM\n");
              exit(EXIT_SUCCESS);
          }
      }
      int main(void) {
          myfile = fopen("file", "w+");
          fd = open("myfifo", O_RDONLY);
          {
              struct sigaction act;
              memset(&amp;act, 0, sizeof(act));
              act.sa_handler = sig_handler;
              sigaction(SIGTERM, &amp;act, 0);
          }
          for(;;)
              pause();
          return 0;
      }
  </code></pre>