私はシステムコール "write"に遭遇しました。次に、 "putchar"と "write"を比較しようとしました。今、私は上記のコード行と混同しています。どちらが良いですか、ch = ' n'; write(1、&ch、1);またはputchar( ' n');
答えて
putcharはライブラリ関数です。 stdoutに文字を書き込むためにwriteシステムコールを呼び出します。
システムコールに何度もアクセスすると、システムのパフォーマンスが低下します。
したがって、ライブラリ関数は実装されています。
ライブラリは書き込み用に機能し、バッファを割り当てます。バッファが一杯になるかフラッシュされると、writeシステムコールが呼び出されて内容がstdoutに書き込まれます。
システムのパフォーマンスを向上させるには、ライブラリ関数(putchar)を使用する必要があります。
出力をすぐに書き込む必要があるかどうかは、書き込みシステムコールを使用することができます。
いくつかの改善が可能です: 'write'は' write'システムコールをラップすることによって通常実装される[ライブラリ関数](http://pubs.opengroup.org/onlinepubs/9699919799/functions/write.html)です。多分そうではないかもしれない。 'putchar'は直接' write'システムコールを呼び出すかもしれないし、しないかもしれません。代わりに 'write'関数を呼び出すかもしれません。 *優れたシステムパフォーマンスが必要な場合は、ライブラリ関数を使用する必要があります。*おそらく。それは広すぎる一般化です。 *あなたはすぐに出力を書く必要があれば、システムコールを書くことができます。*あるいは、 'stderr'を' fputc'に 'STDIO'を使うことができます。 –
- 1. 何が良いですか:WHERE n = 0またはWHERE n!= 1
- 2. char ch = 'Z'はどのchに格納されますか?
- 3. 1/N + 2/N-1 + 3/N-2 + ... N/1
- 4. scanf( "%c、&ch);
- 5. A [n-1]> = A [n] <= A [n + 1]
- 6. ピボット1行n列からn行1列まで
- 7. O(n^2 * log(n))とO(n^3)どちらが大きいですか?
- 8. L = {1^n(n + 1)/ 2}は文脈自由ですか?
- 9. 1からNまでLCM = Nのペア数はいくつですか?
- 10. A(n)= A(n-1)+ n * log(n)?
- 11. n> = 1チューリングマシンの場合1^3^n
- 12. MSVC++の "Ch"とは何ですか?
- 13. curl_exec($ ch)の問題
- 14. 反復T(n)= T(n - log(n))+ 1
- 15. 解決:T(n)= T(n/2)+ n/2 + 1
- 16. 複雑さ(N *(N-1)/ 2)
- 17. numpyの(N、)と(N、1)の違いは何ですか?
- 18. ブルースEckel氏TICを通過しながら、(第1巻)CH-12 Q-21
- 19. nのサブセット数は、nが偶数の場合は2^n、nが奇数の場合は2 ^(n-1)です。
- 20. Matlabスクリプトa(n)= a(n-1)+ a(n-2)
- 21. このN + 1を修正する方法。 Rails。また、なぜN + 1個のクエリが悪いのですか?
- 22. どちらが良いですか?:(reduce + ...)または(apply + ...)?
- 23. クラス図設計の問題:1からnと1から1
- 24. chコマンドがありませんubuntu
- 25. (n、1)と(n、)のnumpy配列
- 26. numpyで(n)D配列から(n-1)D配列を選択
- 27. N-クイーンズディスプレイ1ランダムソリューション
- 28. ビット単位のコード "$ n&($ n - 1)"は何をしますか?
- 29. n&(n-1)この表現は何をしますか?
- 30. はX^n(1/n)よりも効率的ですか? (nは整数)
'write'と' putchar'のマニュアルページを見ましたか?混乱しているのは何ですか? – lurker
私はマニュアルを見ました。私はwriteがシステムコールで、putcharはライブラリ関数であることを知っています。私は、効率性とメモリ使用の面で、互いの優しさという点で混乱しています。すなわち「putchar」の内部アーキテクチャは何ですか? –
私はあなたが混乱しているものを尋ねましたが、あなたは言っていませんでした。 – lurker