問題タブ [fcntl]
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 - open() は O_CLOEXEC フラグを設定しません
open() を使用して O_CLOEXEC フラグを設定しようとしましたが、成功しませんでした。
次のマイクロテストを検討してください。
カーネル バージョン 2.6 の Linux で実行すると、テストは成功し、「OK!」と出力されますが、3.8 または 3.9 カーネルでは失敗します。
どうしたの?ありがとう!
linux - ポーリングせずに flock/lockf/fcntl の変更について通知を受ける
ポーリングせずにファイルのロック状態の更新を (Linux で) 取得する方法はありますか?
lockf(fd, F_TEST) または投機的な LOCK_NB|LOCK_SH を介してステータスをポーリングできることは知っていますが、ポーリングは悪いです(tm)。
もちろん、ファイルがロックされていない場合は単純なロック試行で確認できますが、他のエッジもサンプリングしたい (ユースケース: (大規模な) プログラムが lockf を使用してインスタンス間を同期する - おそらく取得できるそれは群れに変わりました。もちろん、ロックを占有していない間は、ロックが取得可能になったときに表示される GUI を追加したいと考えています)。
この場合、少なくとも Linux 3.9.1 では inotify が機能しないことに注意してください。
python - 続行するには任意のキーを押してください (Python、クロスプラットフォーム ソリューション)
Python 2.7.x を使用して、Linux/Mac/Windows マシンでスクリプトの 1 つの動作を作成しようとしています。
このスレッドの助けを借りて:
目的の結果を得ることができます。任意のキーを押すと、スクリプトが終了します。
しかし、おそらくこれを行うためのより良い方法がありますか?誰か助けてくれませんか?
ありがとう!
python - ストリームを read() ブロッキングにする
これの逆は何ですか?
私はもう試した
しかし、結果はAttributeError: 'module' object has no attribute 'O_BLOCK'
.
少し背景を説明するために、データをチャンクでpopen
'ed プロセスの STDIN にパイプしています。STDOUT で待機しているデータがある場合は、すぐに読み取ってクライアントに戻す必要があります (したがって、ノンブロッキングに切り替えます)。ただし、データのパイプ処理が完了したら、STDOUT で EOF を取得するまでブロックする必要があります。
これを行うためのより良い方法がある場合 (理想的にはクロスプラットフォーム?)、私はすべて耳にします
c - Macで「close-on-exec」ソケットをアトミックに作成するには?
Linux でソケットを作成する場合、O_CLOEXEC
作成時にフラグを指定することができます。
したがって、このソケットが開いたままの状態で他のスレッドがfork()
+を実行することはありません。exec()
しかし、Mac では、マニュアルによると、同じトリックを行うことはできません。
ソケットには、通信のセマンティクスを指定する指定されたタイプがあります。現在定義されている型は: SOCK_STREAM SOCK_DGRAM SOCK_RAW SOCK_SEQPACKET SOCK_RDM
フラグO_CLOEXEC
は への呼び出しでのみ設定できますfcntl()
。そして、それはアトミックな方法ではありません - 一部のスレッドは と への呼び出しの間に行うことができexec()
ます。socket()
fcntl()
この問題を解決するにはどうすればよいですか?
python - fcntl.lockf() はどのようにファイルをロックしていますか?
現在、Pythonを介してファイルをロックしようとしているため、他のプロセスはファイルを読み取ることさえできません。
これまでのところ、Python インタープリターを介して fcntl.lockf() の動作をテストしていました。
私はこれと fcntl.lockf の他のいくつかのバリエーションを試しましたが、それでもファイルを 2 回目に開いて彼の fd を取得することができました。読むことも書くこともできました。
何か不足していますか、それとも他のプロセスのためにファイルをロックするべきではありませんか? それを行う他の方法はありますか?