問題タブ [aio-write]
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.
python - Pythonで非同期ファイル書き込みは可能ですか?
Pythonで非同期にファイルに書き込む簡単な方法はありますか?
Pythonに付属しているファイルioがブロックしていることは知っています。ほとんどの場合、これで問題ありません。この特定のケースでは、アプリケーションをまったくブロックしないように、または少なくとも可能な限り最小限に抑えるために、書き込みが必要です。
c++ - OSXとLinuxのAIO-MacOSX10.6で動作しない理由
私の質問は本当に簡単です。以下のコードがLinuxで機能し、Mac OS X 10.6.2SnowLeopardでは機能しない理由。
コンパイルするには、ファイルをaio.ccに保存し、g++ aio.cc -o aio -lrt
LinuxおよびMacOSXでコンパイルしますg++ aio.cc -o aio
。MacでのテストにはMacOSX 10.6.2を使用し、LinuxでのテストにはLinuxカーネル2.6を使用しています。
OS Xで見られる失敗は、aio_writeが-1で失敗し、errnoをEAGAINに設定します。これは、単に「リソースが一時的に利用できない」ことを意味します。何故ですか?
更新(2010年2月):OSXはソケットでAIOをまったくサポートしていません。バマー!
perl - perlで非同期ファイルを待つ方法
ファイルに非同期的に書き込むロギング モジュールをテストしようとしています... 単体テストでは、ログを読み取って、書き込まれたメッセージが期待どおりであることを確認します。ただし、任意の時間ファイルを待機するためにスリープしても、モジュールによる非同期書き込みは、単体テストが終了するまでファイルに到達しないことがわかりました。aio_close の横に print ステートメントを追加して、最後までファイルが閉じられないことを確認しました。これをテストするにはどうすればよいですか?
c++ - Linux システム コール aio_write() がエラー コード 22 (EINVAL) で失敗する
Linux の aio_write と aio_read を使用するテスト ユーティリティがあります。このテスト ユーティリティは、静的ライブラリをラップしてテストします。このライブラリはマルチスレッドのブラック ボックスです。
今まで、それはうまくいきました。しかし、今回はこのブラックボックスに大きな変更を加えたため、テスト ユーティリティは最初の IO をコミットするとすぐに失敗します。この IO は errno 22 == EINVAL で戻ります。
aio_write のマニュアル ページに基づくと、このエラーは、次のフィールドのいずれかが無効な場合に発行されます --> aio_offset、aio_reqprio、aio_nbytes。gdb 内で実行し、構造体 aiocb *入力パラメーター内の他のすべての値と同様に、それらの値をテストしました。私の結論は、入力パラメーターはすべて有効であるということです。
ブラックボックス内でスレッドが機能する方法に何か変化があったのではないかと思います。これがこの問題の原因であると思われます(他の説明が見つかりません)。
私が実際に理解しようとしているのは、どのシナリオで aio_write() が EINVAL エラー コードを返すのかということです。
明確にするために、ブラックボックスを古いバージョンに置き換えると、同じテストユーティリティを使用して正常に動作します.... (入力引数が悪いバージョンの入力引数に一致することがわかったので、ここでも入力引数をテストしました)。
c - ゴミだらけのCファイル
たとえば、非同期関数00000....
を使用したいなど、ファイルに同じ番号を入力する必要があります。aio_write
しかし、ここで私が得るもの
これが私のコードです
そして、これが私の非同期書き込み関数です(この関数は悪いと思います)
また、ここでは asyncronius 関数が終了するのを待ちます
また、ここに私の完全なプログラムがあります
c - ゼロを含むファイリング ファイル
私のファイルは 0 で埋められるべきですaio_write
。結果として私のファイルは次のようになります000000000....
が、結果として私のファイルはゴミでいっぱいになる
何が悪いのか想像もつきません。まず、非同期書き込みを使用しているため、完了するまで待つ必要がありda_aio_write
ます
また、ここに私の書き込み機能があります
そして私のメイン
私が間違っていることはありますか?編集:私は、私がコンパイルすると、私が得る
編集私の完全に更新されたコード
asynchronous - aio_write() が間違った動作をするのはなぜですか?
aio_write を使用して 2 つのファイルを書き込みたいとします。
32KBのバッファを使用し、1ファイルに対してaio_writeを2048回繰り返します。(ファイルサイズは64MB)
ただし、結果は 64MB ではなく、サイズは 64MB + 32KB になりました。
また、ファイルがガベージで書き込まれることもあります。ファイルに「A」を記入したい。
私を助けてください。