C - 将fifo日志事件放入文本文件中

时间:2016-08-20 14:42:36

标签: c file pipe fifo mkfifo

我试着通过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

0 个答案:

没有答案