我试着通过FIFO从不同的线程发送日志事件,读取事件并将它们写入文件。
首先我分叉了我的主()。在Child中我想运行FIFO阅读器,在Parent中我启动我的线程(这些工作正常)。
void send_log(char * message){
FILE *log;
int err;
err = mkfifo(FIFO, 0666);
CHECK_MKFIFO(err);
log = fopen(FIFO, "w");
FILE_OPEN_ERROR(log);
char *msg;
asprintf(&msg, "%d %lu %s", sequence,(unsigned long)time(NULL),message);
printf("log message: %s \n",msg);
if( fputs(msg,log) == EOF){
fprintf(stderr, "error writing data to fifo \n");
exit (EXIT_FAILURE);
}
FFLUSH_ERROR(fflush(log));
free(msg);
sequence++;
/*err = fclose(log);
FILE_CLOSE_ERROR(err);*/
}
我创建了一个发送日志事件的函数:
{{1}}
我知道我把一些东西放在了公文中,但我也尝试了代码中的那些东西。任何人都可以帮助我吗?
谢谢!
编辑:解决方案是使用" aw"而不是" w"并在while循环中打开我的gateway.log