この短い質問: SIGTERM を受け取って終了した場合、どのように FIFO ファイルを閉じますか。私のファイルが通常のファイルであれば、動作します。ただし、FIFO の場合は機能しません。何か案は?ありがとう :)
/**
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;
}