• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:windowsのC#での話です。あるプロセスが断続的(数秒程度で一定し)

C#でtail -fを実行する方法

このQ&Aのポイント
  • C#でtail -fコマンドのようにファイルを監視するプログラムを作成する方法について説明します。
  • ファイルをオープンして最後までseekし、その後は1秒ごとにファイルの内容を読み込み続けるプログラムを作成することができます。
  • ただし、この方法では他のプログラムがログファイルに書き込むことができなくなるため、注意が必要です。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

> FileStream("logfile.txt", FileMode.Open, FileAccess.Read, FileShare.Read)  アクセス制御の指定がFileShare.Readなので、他のプロセスは読込しかできなく、書き込もうとしたらエラーになります。ここは他のプロセスのアクセスを制御するパラメータなので、  FileShare.Write または  FileShare.ReadWrite を指定する必要があります。

Kiyo9876Tokyo
質問者

お礼

なるほど。わかりました。もう一度ヘルプを見直してみて、今更ながらちゃんと理解しました。 どうもありがとうございました!

その他の回答 (1)

  • t_nojiri
  • ベストアンサー率28% (595/2071)
回答No.2

ログファイルをフルアクセスで開いて、他のプロセスが書き足してるのに邪魔したらエラーになるのは当然な気がします。 tailの様な事をしたいのであれば、1秒毎にファイルサイズ比較して、増えたらログファイルコピーしてコピーした物開いて、前のファイルサイズ分シークして、増分を出力するとか?(workで作ったファイルは消すなりなんなりするような)

Kiyo9876Tokyo
質問者

お礼

回答ありがとうございます。 ログファイルに内容が追加されていたら毎回コピー、というのはできれば避けたいのですが、、、 回答いただいて申し訳ないのですが、もう少しスマートな方法がほしいです。

関連するQ&A