問題タブ [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.
c - ファイル記述子のコードに問題があります。C (リナックス)
理想的には、あるドキュメントからデータを取り込み、それを暗号化し、別のドキュメントに保存するコードを作成しました。
しかし、コードを実行しようとすると、暗号化されたデータが新しいファイルに入れられません。空白のままにするだけです。誰かがコードに欠けているものを見つけてください。やってみたけどわからなかった。
読み取り/書き込み機能に何か問題があると思います。または、do-while ループを正しく実装していない可能性があります。
c - 次のコードで SegFault が発生するのはなぜですか。c(リナックス)
これは、ドキュメントのデータを逆にして、同じドキュメント自体に保存するコードです。しかし、セグメンテーション違反が発生しています。助けてください。SegFault が発生する理由がわかりません。
EDIT1 追加してみました:
しかし今では、ドキュメント内の文字を反転するのではなく、何度も複製するだけです。
c - プログラムの起動時にstdinストリームが関連するファイル記述子からデータを読み取らないようにするにはどうすればよいですか?
select()呼び出しを使用して、プログラムのメインサイクルで入力の存在を検出しています。これにより、stdinの代わりにrawファイル記述子(0)を使用するようになります。
このモードで作業しているときに、ソフトウェアが最初に入力のチャンクを失うことがあることに気づきました。stdinは、プログラムの開始時にその一部を消費しているのではないかと思います。stdinのこの動作を防ぐ方法、または入力データ全体を取得する方法はありますか?
説明されている効果は、プログラム開始の瞬間に標準入力の一部のデータでのみ再現できます。私の実行可能ファイルは、開始時に常に何らかの入力があるように、xinetdサービスとして使用する必要があります。
標準入力は次のように読み取られます。
c++ - fd_set を反復処理する方法
fd_set を反復する簡単な方法があるかどうか疑問に思っていますか? これを行う理由は、select() がこれらの fd_sets を変更して、関心のあるソケットのみを含めるようにするため、接続されているすべてのソケットをループする必要がないためです。また、直接アクセスすることを意図していない型の実装を使用することは、システムによって異なる可能性があるため、一般的に悪い考えであることも知っています。ただし、これを行うには何らかの方法が必要であり、アイデアが不足しています。だから、私の質問は:
fd_set を反復処理するにはどうすればよいですか? これが本当に悪い習慣である場合、接続されているすべてのソケットをループする以外に、「問題」を解決する方法はありますか?
ありがとう
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 インターフェイスの既知の問題ですか?
このコードを改善し、この再現不可能な問題を回避する方法を提案してください。
python - Python 永続ソケット接続
私はpythonが初めてです:)永続的なソケットを作成したいと思います。ファイル記述子を使用してこれを実行しようとしました。私が試したのは:
ソケットソケット接続を開く
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ファイル記述子番号を取得する
fd = s.fileno()
ファイル記述子を 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で解決するには?
python - ファイル記述子を使用してプロセス間で通信する
次のpythonコードがあります:
Popen
and を使用しないように書き換えるにはどうすればよいcat
ですか? 対話型シェルで実行されているシェル関数から、他の関数によって作成されたデータと混合しないデータを渡す方法が必要です (したがって、stdout または stderr を使用できません)。
sockets - Java データグラム ソケットのファイル記述子
Java Datagram ソケットのファイル記述子を取得するにはどうすればよいですか? 私はウェブを検索しましたが、成功しませんでした。
スリーニ
c - openでファイル記述子が0になるのはなぜですか?
パイプとフォークを使用しているプログラムで作業しており、書き込み終了を出力ファイルに変更する必要があります。しかし、ファイルを開くと、ファイル記述子は0になります。これは通常、stdinですが、これがいくつかの問題の原因であると思います。これが私のコードです
なぜ0なのか誰かに教えてもらえますか?またはそれを修正する方法は?
file-descriptor - stdin ファイル記述子が指すファイルは、異なるプロセスの同じファイルですか?
質問があります。慣例により、UNIX はすべてのプロセスの stdin、stdout、stderr にファイル記述子 0、1、2 を関連付けます。たとえば stdin が指すファイルは、異なるプロセスで共有されていますか? 共有されている場合、2 つのシェルを開いてこれら 2 つのシェルに入力を入力すると、OS は共有ファイルをどのように管理するのでしょうか?