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 :)
/**
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(&act, 0, sizeof(act));
act.sa_handler = sig_handler;
sigaction(SIGTERM, &act, 0);
}
for(;;)
pause();
return 0;
}