- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:windowsのC#での話です。あるプロセスが断続的(数秒程度で一定し)
C#でtail -fを実行する方法
このQ&Aのポイント
- C#でtail -fコマンドのようにファイルを監視するプログラムを作成する方法について説明します。
- ファイルをオープンして最後までseekし、その後は1秒ごとにファイルの内容を読み込み続けるプログラムを作成することができます。
- ただし、この方法では他のプログラムがログファイルに書き込むことができなくなるため、注意が必要です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> FileStream("logfile.txt", FileMode.Open, FileAccess.Read, FileShare.Read) アクセス制御の指定がFileShare.Readなので、他のプロセスは読込しかできなく、書き込もうとしたらエラーになります。ここは他のプロセスのアクセスを制御するパラメータなので、 FileShare.Write または FileShare.ReadWrite を指定する必要があります。
その他の回答 (1)
- t_nojiri
- ベストアンサー率28% (595/2071)
回答No.2
ログファイルをフルアクセスで開いて、他のプロセスが書き足してるのに邪魔したらエラーになるのは当然な気がします。 tailの様な事をしたいのであれば、1秒毎にファイルサイズ比較して、増えたらログファイルコピーしてコピーした物開いて、前のファイルサイズ分シークして、増分を出力するとか?(workで作ったファイルは消すなりなんなりするような)
質問者
お礼
回答ありがとうございます。 ログファイルに内容が追加されていたら毎回コピー、というのはできれば避けたいのですが、、、 回答いただいて申し訳ないのですが、もう少しスマートな方法がほしいです。
お礼
なるほど。わかりました。もう一度ヘルプを見直してみて、今更ながらちゃんと理解しました。 どうもありがとうございました!