C言語でのマルチスレッドでのログファイル出力したいと考えています。
以下の方法にて、試みてみましたが、ログを確認するとマルチスレッドの為か、グチャグチャになってしまいます。
排他制御等が必要なのでしょうか?
詳しい方、教示願います。
・7/12 追記
返答遅くなりすいません。
ファイルがグチャグチャというのは、其々のタスクから出力した文字列が混ざったような出力結果ということです。
正確にはマルチスレッドというより、マルチタスクです。
[プラットフォーム] vxWorks
#include <stdio.h> #include <sys/types.h> FILE *fp; char filename[] = "sample.log"; void log(void) { fprintf(fp, "%s : tid => %d\n", __func__, gettid()); /*7/12補足漏れ追記 */ fflush(fp); } int main(void) { /* ファイルオープン */ if ((fp = fopen(filename, "a+")) == NULL) { fprintf(stderr, "ファイルのオープンに失敗しました.\n"); return EXIT_FAILURE; } /*途中簡略 複数スレッド起動して、各スレッドから上記log関数をコールする*/ /* ファイルクローズ */ fclose(fp); }
回答6件
あなたの回答
tips
プレビュー