問題タブ [filehandle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
5 に答える
4892 参照

c - Cを使用してWindowsでファイルハンドルからファイルの名前を取得する方法は?

特定のファイル ハンドルからファイル名を取得しようとしています。

GetFileInformationByHandleが役立つ可能性があることを確認しましたが、返される構造にはファイル名情報が含まれていません ( http://msdn.microsoft.com/en-us/library/aa363788%28v=VS.85%29.aspx)。

これどうやってするの?

編集:

Windows XP で GetFileInformationByHandleEx を動作させるために Windows FileID API をインストールしようとしました。しかし、fileextd.h をインクルードすると、次のエラーが発生します。

次のコードから:

0 投票する
1 に答える
1206 参照

c - テキストファイルの特定の行を削除するにはどうすればよいですか?

テキストファイルの特定の行を削除するプログラムのコーディングを手伝ってもらえますか。

私は使用することを計画しています:

  1. fgetsはテキストファイルから行をキャプチャして配列に格納しますが、fgetsはどのように行を配列に格納するのか混乱しました(行をキャプチャして最初のインデックスに格納し、次に行をキャプチャするときにこれは次のインデックスに保存されますか、それとも配列の最初のインデックスを上書きしますか?)

  2. 行が異なるインデックスに格納されている場合は、ユーザーの入力をキャプチャされたfgetsの行と比較する条件があり、それが等しい場合は、行をスキップして、ファイルの終わりに達するまでルールを実行します。

  3. 次に、このfclose(stream)のようにテキストファイルを閉じ、「wt」として再度開いて、ファイルに書き込まれたすべてを上書きします。

私は正しいロジックを持っていますか...またはあなたはより良い解決策を提案することができます...fgetsがどのように行を配列に格納するかを理解するのを手伝ってくれることを願っています...

ところで、これは私がテストのために試しているコードです:

0 投票する
2 に答える
209 参照

regex - perlを使用して同じファイル名からファイルの内容と値の両方を抽出するのに役立ちます

申し訳ありませんが、これが冗長な場合ですが、部分的に機能しているperlスクリプトがあります。どちらかを抽出する正規表現foo|barと、指定された文字列のプレフィックスがあります。しかし、問題は、私の文字列もファイル名であり、その内容を開いて取得したいことですlocale_col.dat.2010120813.png(以下の期待される出力を参照)。

出力は次のようになります。

1回のパスで文字列のリスト(FileList.txtからのファイル名)を読み取り、ファイル名パスから特定の値を抽出し(regexを使用)、その内容のファイル名を開くことができるように、これを微調整するのに助けが必要です。それが理にかなっていることを願っていますか、それともこれを2つのperlスクリプトに分割することを検討していますか?ご入力いただきありがとうございます。

コード(WIP):

FileList.txtの内容:

リストされたファイルの1つのコンテンツの例:(抽出するにはここでヘルプが必要です)

期待される出力:

0 投票する
3 に答える
567 参照

perl - Perl:close()なしでopen()を介してゾンビを作成する

問題は次のとおりです。クライアントから要求を取得し、要求に応じて(一部のモジュールから)関数を実行し、クライアントに応答を返すデーモンがあります。fork()の後、STDIN、STDOUT、およびSTDERRを閉じます。1つの機能はdmesgをチェックすることです。このために、open(DMESG、 "/ bin / dmesg |")を介してdmesg出力を取得します。関数が終了すると自動的に閉じると思ったので、読んだ後は閉じません。しかし、これは発生せず、dmesgを呼び出すたびにゾンビが発生します。

PerlのSTDIN /STDOUT / STDERRを再初期化するにはどうすればよいですか?「再度開く代わりにSTDOUTを閉じる場合の問題は、他のファイルを開くと、fd 0、1、または2になる可能性があるため、将来STDOUTを再度開くことができないことです。」by jmanning2kそして、それはそれと関係があると思いますが、私は実際にはそれを理解していません。誰かが私にそれを説明してくれることを願っています。

たとえば、qx()を介してdmesgを呼び出すことで、問題を回避できることを知っています。または単にfhを閉じますが、ゾンビがどこから来ているのかを理解したいと思います。

0 投票する
3 に答える
8887 参照

perl - __DATA__ を 2 回使用するにはどうすればよいですか?

__DATA__どうすれば2回使えますか?

0 投票する
3 に答える
4279 参照

perl - STDOUT への書き込みと、「/dev/tty」に開かれたファイルハンドルの違いは何ですか?

この 2 つの例の違いは何ですか?

0 投票する
3 に答える
381 参照

perl - Perl のファイル ハンドル

典型的なファイルハンドルの代わりに、私は次のことに慣れています:

ファイル内の行へのポインターを取得して、これらのポインターをいつでも進めることができるようにするにはどうすればよいですか? 対応するソート済みファイルへの 2 つのポインターを作成して、一方のファイルの行が他方の行よりも「小さい」か「大きい」かに基づいてポインターを進めることができるようにしようとしています。

注: 入力ファイルが BIG であると仮定します。

0 投票する
4 に答える
956 参照

perl - Perl: ファイルに追加して新しい行数を取得する

簡単な質問です。私が変数に対して完全に間違っていると確信していますが、ここに問題があります。

最初のコード:

これは私が得る出力です:

ファイルが書き込まれ、追加されていることを確認しました。変数を設定し、更新し、再度適切に呼び出す方法について、誰かが正しい方向に向けることができますか?

0 投票する
1 に答える
217 参照

perl - 4 引数選択問題

SELECT_TUT から:

「...複数のファイル記述子を効率的に監視し、それらのいずれかが「準備完了」であるかどうかを確認するために使用されます。つまり、I / Oが可能になるかどうか、または「例外的な状態」が発生したかどうかを確認します記述子の... ...

では、select() のポイントは何ですか? 好きなときに記述子を読み書きすることはできませんか? select() のポイントは、複数の記述子を同時に監視し、アクティビティがない場合にプロセスを適切にスリープ状態にすることです。Unix プログラマーは、データ フローが断続的な複数のファイル記述子からの I/O を処理しなければならない状況に陥ることがよくあります。read(2) および write(2) 呼び出しのシーケンスを作成するだけの場合、呼び出しの 1 つがファイル記述子から/へのデータの待機をブロックする可能性があり、別のファイル記述子は I /O. select() はこの状況に効率的に対処します。」

誰かが私に、これが何を意味し、これがどのように機能するかを説明してもらえますか?

たとえば、ここではファイル ハンドルが 1 つだけ選択されていますが、なぜ監視が必要なのでしょうか?

0 投票する
1 に答える
871 参照

perl - 一度に1行ずつ、複数のファイルハンドルの配列またはハッシュ内のファイルから特定の列をマージするにはどうすればよいですか?

作業しているファイルについて説明することから始めます。

これが私がやりたいことです:

  1. それぞれ数百 MB のサイズのgroupI非常に大きなタブ区切りのテキスト ファイルを指すファイル ハンドルのハッシュまたは配列があります。fileJ

  2. 一度に 1 つのタブ区切り行を読み込んで、ファイル ハンドルをループしたいと思います。すべてのファイルの行をメモリに読み込むことができません。

  3. ファイル ハンドルのループが終了したら、split各行で、各分割配列 (たとえば、5 番目のフィールド) から特定の列のデータを取得し、そのデータを 1 行の出力にマージします。

  4. 手順 2 (各ファイル ハンドルから 1 行を取得) を EOF まで繰り返します。

その後、、、などになりgroupA/mergedOutput.mtxますgroupB/mergedOutput.mtx

問題は、手順 2 と 3 を正しく行う方法がわからないことです。

これが私がこれまでに持っているコードです:

1 つの問題は、次のコードが機能しないことです。

の値を出力しようとすると$line、次の値が得られGLOBます。

をどのように誤っ$lineて処理していますか、または Perl 内でこれを行う簡単な方法はありますか?

アドバイスありがとうございます。

編集

固定コードは次のとおりです。

ヒントをありがとう!