問題タブ [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.

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

c - fcntl F_GETLK は常に true を返します

ロックファイルを使用して単一インスタンスのデーモンを作成しようとしていますがfcntl()、期待どおりに動作しないようです...

したがって、-1 が返された場合は呼び出しget_lock_file_statusて終了し、他のインスタンスが実行されていないことを確認しcreat_lock_file、デーモンを正常に作成した後に pid ファイルをクレートしてロックするために呼び出します...

コンパイルして実行すると、プログラムは期待どおりに動作し、ロック ファイルが作成されて pid が書き込まれますが、2 番目のインスタンスが開始されると、2 番目のインスタンスは単に同じロック ファイルを開いて独自の pid を書き込みます。

私は何を間違っていますか?2 番目のインスタンスは で -1 を返すべきではありませんget_lock_file_statusか?

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

c - OSX の fcntl(fd, F_SETLKW, ...) でプロセスがブロックされるのはなぜですか?

SQLite の新しい実験的機能は、ある時点でブロッキング posix ロックを使用します。OSX でのこの fcntl() 呼び出しでプロセスがブロックされるというテスト ケースがありますが、その理由がわかりません。同じテストが Linux でも機能しますが、これは幸運なタイミングかもしれません。

呼び出しは次のとおりです。

ここで、「f」は次のとおりです。

[lsof] によると、ファイルが開いているのは私のプロセスだけです。

ただし、fcntl() が最初に呼び出されたときに、他のプロセスが競合するロックを保持していた可能性があります。

gdb は fcntl() に渡されるファイル記述子が「10」であることを示しているので、有効だと思います。

私の質問は、他のプロセスがファイルを開いていない場合、なぜ fcntl() がブロックされるのでしょうか?

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

c - fcntl を使用したスト​​レージの事前割り当てが期待どおりに機能しない

システムコールでストレージを事前に割り当てたいfcntl。これを行うための私のコードは次のとおりです。

変数ret-1、そのコードを実行した後ではありません。fstat同じファイル ハンドルを呼び出してファイル サイズを取得すると、 stat.st_size = 0. しかし、値store.fst_bytesallocは の値と同じですlength
どうすればいいですか?電話すると

穴のあるファイルを取得するのですか、それとも穴のない「実際の」ファイルですか? 2つ目は私の目標です。

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

c - stat.h ファイルへのアクセス ファイル記述子 open() ハッキング 悪用の技術

VM(virutalbox)を使用してJon Ericksonの「Hacking:The Art of Exploitation」の第2版を作成し、付属のLiveCD(Ubuntu 7.04)を実行しています。セクション 0x281「ファイル アクセス」では、82 ~ 84 ページの例を使用して、open() close() read() および write() 関数と同様に、ファイル記述子を介したファイルへのアクセスについて著者が説明しています。

simplenote.c のコードは次のとおりです。

ただし、本に記載されている次の指示を端末ウィンドウに入力すると、次のエラー メッセージが返されます。

sys/stat.h の 105 行目は次のとおりです。

そして、ここに bits/stat.h 行 63-83 があります:

これは、最初の一連の問題に役立つ可能性があると思います。

C++ システム ファイルの bits/stat.h が突然「エラー: フィールド 'st_atim' の型が不完全です」で壊れる

/usr/include/time.h

私の端末ウィンドウでは何もしません。

そして、ここに simplenote.c のメイン関数の 1 ~ 6 行目、34 ~ 35 行目があります。

オープン関数の問題は fcntl.h に起因すると思いますか?

作者が提供した不完全なコードが原因で、問題が発生し続けているようです。常にスタックオーバーフロー コミュニティの助けに頼りたくないので、今後これらの問題を調べて修正することについて、初心者にどのような提案がありますか?

ありがとう。