問題タブ [file-descriptor]

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 投票する
3 に答える
567 参照

c - ファイル記述子のコードに問題があります。C (リナックス)

理想的には、あるドキュメントからデータを取り込み、それを暗号化し、別のドキュメントに保存するコードを作成しました。

しかし、コードを実行しようとすると、暗号化されたデータが新しいファイルに入れられません。空白のままにするだけです。誰かがコードに欠けているものを見つけてください。やってみたけどわからなかった。

読み取り/書き込み機能に何か問題があると思います。または、do-while ループを正しく実装していない可能性があります。

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

c - 次のコードで SegFault が発生するのはなぜですか。c(リナックス)

これは、ドキュメントのデータを逆にして、同じドキュメント自体に保存するコードです。しかし、セグメンテーション違反が発生しています。助けてください。SegFault が発生する理由がわかりません。

EDIT1 追加してみました:

しかし今では、ドキュメント内の文字を反転するのではなく、何度も複製するだけです。

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

c - プログラムの起動時にstdinストリームが関連するファイル記述子からデータを読み取らないようにするにはどうすればよいですか?

select()呼び出しを使用して、プログラムのメインサイクルで入力の存在を検出しています。これにより、stdinの代わりにrawファイル記述子(0)を使用するようになります。

このモードで作業しているときに、ソフトウェアが最初に入力のチャンクを失うことがあることに気づきました。stdinは、プログラムの開始時にその一部を消費しているのではないかと思います。stdinのこの動作を防ぐ方法、または入力データ全体を取得する方法はありますか?

説明されている効果は、プログラム開始の瞬間に標準入力の一部のデータでのみ再現できます。私の実行可能ファイルは、開始時に常に何らかの入力があるように、xinetdサービスとして使用する必要があります。

標準入力は次のように読み取られます。

0 投票する
7 に答える
27420 参照

c++ - fd_set を反復処理する方法

fd_set を反復する簡単な方法があるかどうか疑問に思っていますか? これを行う理由は、select() がこれらの fd_sets を変更して、関心のあるソケットのみを含めるようにするため、接続されているすべてのソケットをループする必要がないためです。また、直接アクセスすることを意図していない型の実装を使用することは、システムによって異なる可能性があるため、一般的に悪い考えであることも知っています。ただし、これを行うには何らかの方法が必要であり、アイデアが不足しています。だから、私の質問は:

fd_set を反復処理するにはどうすればよいですか? これが本当に悪い習慣である場合、接続されているすべてのソケットをループする以外に、「問題」を解決する方法はありますか?

ありがとう

0 投票する
0 に答える
476 参照

c++ - DIR* はどのように EBADF エラーを取得できますか?

私は継承したいくつかのコードを持っています。これは反復するためのクラスの一部であり、ディレクトリの内容にアクセスし、boost::filesystem::path を使用します。コードの一部は次のとおりです。

私が遭遇した問題は、handle_read_error() で errno == EBADF の再現不可能な ASSERT です。コードを調べると、コンストラクターで m_directory_stream が設定されており、他に何も触れていないように見えます。NULL ではないか、コンストラクターが handle_open_error() を呼び出し、このケースは発生しませんでした。したがって、構築時点では、m_directory_stream は有効であり、開いたときにエラーは発生しませんでした。ただし、しばらくして unsafe_increment() が呼び出され、おそらくコンストラクターの直後に呼び出され、この時点で DIR オブジェクトは EBADF になり、アサーションの失敗がスタックに記録されます。

障害が検出されたマシンに関する情報は次のとおりです (アプリケーションはシングル スレッドであることに注意してください)。

ファイル記述子を保持している間に、どのようにしてファイル記述子が不良になる可能性がありますか? これは、dirent.h インターフェイスの既知の問題ですか?

このコードを改善し、この再現不可能な問題を回避する方法を提案してください。

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

python - Python 永続ソケット接続

私はpythonが初めてです:)永続的なソケットを作成したいと思います。ファイル記述子を使用してこれを実行しようとしました。私が試したのは:

  1. ソケットソケット接続を開くs = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

  2. ファイル記述子番号を取得するfd = s.fileno()

  3. ファイル記述子を I/O として開くos.open(fd)

しかし、私は得るOSError: [Errno 9] Bad file descriptor

私はPythonが初めてで、おそらく実装が間違っていると言いました。しかし、より簡単な例を試してみましたos.close(s.fileno())が、同じエラーが発生しましたOSError: [Errno 9] Bad file descriptor

ruby で書かれた例を見つけてテストしたところ、うまくいきました。Ruby で Unix の永続的なネットワーク ソケットを作成するにはどうすればよいですか?

誰でも私のためにこれをPythonに書き込むことができますか?私が達成したいのは:

私がやりたいことを理解していただければ幸いです。アドバイスありがとう!


あなたの応答の後、私は次のコードを試しました:

1

2

そして、エラーはOSError: [Errno 9] Bad file descriptor

問題が何であるかは確かです(私はphp開発者です)。PHPと同じように、Pythonはスクリプトを閉じた後にゴミを削除します。これをpythonで解決するには?

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

python - ファイル記述子を使用してプロセス間で通信する

次のpythonコードがあります:

Popenand を使用しないように書き換えるにはどうすればよいcatですか? 対話型シェルで実行されているシェル関数から、他の関数によって作成されたデータと混合しないデータを渡す方法が必要です (したがって、stdout または stderr を使用できません)。

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

sockets - Java データグラム ソケットのファイル記述子

Java Datagram ソケットのファイル記述子を取得するにはどうすればよいですか? 私はウェブを検索しましたが、成功しませんでした。

スリーニ

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

c - openでファイル記述子が0になるのはなぜですか?

パイプとフォークを使用しているプログラムで作業しており、書き込み終了を出力ファイルに変更する必要があります。しかし、ファイルを開くと、ファイル記述子は0になります。これは通常、stdinですが、これがいくつかの問題の原因であると思います。これが私のコードです

なぜ0なのか誰かに教えてもらえますか?またはそれを修正する方法は?

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

file-descriptor - stdin ファイル記述子が指すファイルは、異なるプロセスの同じファイルですか?

質問があります。慣例により、UNIX はすべてのプロセスの stdin、stdout、stderr にファイル記述子 0、1、2 を関連付けます。たとえば stdin が指すファイルは、異なるプロセスで共有されていますか? 共有されている場合、2 つのシェルを開いてこれら 2 つのシェルに入力を入力すると、OS は共有ファイルをどのように管理するのでしょうか?