問題タブ [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 - O_NONBLOCK は、ファイル記述子または基になるファイルのプロパティに設定されていますか?
fcntl
、open
、read
、およびの The Open Group Web サイトで読んだことから、 がファイル記述子に設定されているかどうか、したがって、非ブロッキング I/O が記述子で使用されているかどうかは、 のプロパティである必要があるというwrite
印象を受けました。O_NONBLOCK
基になるファイルではなく、そのファイル記述子。ファイル記述子のプロパティであるということは、たとえば、ファイル記述子を複製するか、同じファイルに対して別の記述子を開く場合、一方にはブロッキング I/O を使用し、もう一方には非ブロッキング I/O を使用できることを意味します。
ただし、FIFO を試してみると、FIFO に対してブロッキング I/O 記述子と非ブロッキング I/O 記述子を同時に持つことはできないようです (したがって、O_NONBLOCK
設定されているかどうかは、基になるファイル [FIFO] のプロパティです)。 ):
これは私に考えさせます:ノンブロッキングI/O記述子とブロッキングI/O記述子を同じファイルに持つことは可能ですか?もしそうなら、それはファイルのタイプ(通常のファイル、FIFO、ブロック特殊ファイル)に依存しますか? 、キャラクタースペシャルファイル、ソケットなど)?
python - ファイルのロックに役立つユーティリティ - 専門家のヒントが欲しい
私はファイルのサブクラスを作成しました.a)便利にロックするメソッドを提供します(fcntlを使用するため、unixのみをサポートしますが、これは私にとっては問題ありません)、b)読み取りまたは書き込み時にファイルが適切にロックされている.
今、私はそのようなことの専門家ではありません (私はそれについての 1 つの論文 [de]を読んだばかりです)、いくつかのフィードバックをいただければ幸いです。コードは次のとおりです。
(ドキュメント文字列の例は、これに対する私の現在の使用例でもあります)
ここまで読んでくれてありがとう、そしておそらく答えてくれてありがとう:)
linux - 中断のない読み取り/書き込み呼び出し
Linux での C プログラミングの冒険のある時点で、ファイル記述子の読み取りと書き込みを中断できないようにするフラグ (おそらくioctl
/ fcntl
?) に遭遇しました。
残念ながら、これを行う方法やどこで読んだか思い出せません。誰でも光を当てることができますか?
Update0
私のクエリを改良するために、私は同じブロッキングを求めており、それを保証し、ユーザー空間のバッファリングfwrite()
を提供しません。fread()
perl - fcntlとPerlのアラームを連携させることはできますか?
私はLinux、nfsを使用しており、複数のマシンが関係しています。
fcntlを使用してファイルロックを実装しようとしています。同じマシン上のプロセス間でのみ機能することがわかるまで、flockを使用していました。
F_SETLKWを使用してfcntlを呼び出すと、perlアラーム(タイムアウトを追加するため)が以前のように機能しなくなりました。これは通常は問題ありませんが、ctrl-cも実際には機能しません。
私が起こっていると私が信じているのは、fcntlが30秒ごとに信号をチェックしているだけだということです。アラームは最終的には戻ります。ctrl-cがキャッチされました...最終的に。
fcntlがこれらの信号をチェックする頻度を調整するためにできることはありますか?
python - flock() 関数に問題がある
flock()
特にpythonでどのように機能するかについて質問があります。シリアル接続を開くモジュールがあります (経由os.open()
)。このスレッドを安全にする必要があります。を使用して同じモジュールで作業するときにスレッドセーフにするのは簡単threading.Lock()
ですが、モジュールが別の場所からインポートされると壊れます。
を使用することを考えてflock()
いましたが、 flock がどのように機能するかについて十分な情報を見つけるのに苦労しています。ファイルが閉じられると、 flock() がファイルのロックを解除することを読みました。しかし、Python がクラッシュした場合にファイルを開いたままにする状況はありますか?
が設定されている場合、ロックされたファイルの使用を正確に許可するものは何LOCK_EX
ですか? ファイルをロックしたモジュールだけですか?最初に実行されたスクリプトからインポートされたモジュールはありますか?
c - Linux の C で open() を使用して「%」でマークされたコメント行を無視する
最初の文字として「%」でマークされた最初の 2 行を含むファイルを読み込もうとしています。これら 2 行を無視して、不明な量の空白で区切られた 4 つの個別の整数変数を読み取る必要があります。これは、EOF まで各行で繰り返されます。fcntl.h から open() を使用しようとしています。
2 つの完全な行の後に読み取りを開始し、4 つの値を空白で 4 つの整数変数に分ける方法はありますか?
これはサンプル ファイルです。
c - C fcntl 抽象化関数が機能しない
私はアプリを書いていますが、その仕様では、書き込むたびにファイルをロックする必要があります (このファイルは、他のチームが取り組んでいる他のアプリに対して読み取られます)。
私は次の機能を作りました:
私は1つのリターンを得ることができます(すべてがOKであることを意味します)が、テストケースを作成すると、ロックされたファイルに書き込むことができました Oo
テストコードは次のとおりです。
c - fcntl が機能しない
ファイルを開いた後にファイルアクセスモードを変更するのにうんざりしている小さなプログラムがあります。
printf("%d\n", curval); newval = curval | O_WRONLY | O_APPEND; printf("%d\n", newval);
}
テキストファイルを入力としてこのプログラムを実行したときの出力は次のとおりです。
プログラムへの書き込みが失敗するのはなぜですか? また、ファイル ステータス フラグ定数が定義されている場所を見つけることができません。usr/include/ にチェックインしました
constants - fcntl.hには、すべてのステータスフラグ定数が含まれているわけではありません
ヘッダーファイルを調べてきましたが、ステータスフラグが定義されているファイル(O_RDONLYなど)が見つかりません。
ありがとう、ジョン