書き込み(システムコール)


書き込みは、Unix 系オペレーティング システムカーネルが提供する最も基本的なルーチンの 1 つです。ユーザーが宣言したバッファから、ファイルなどの特定のデバイスにデータを書き込みます。これは、システム コールを直接使用してプログラムからデータを出力する主な方法です。出力先は数値コードで識別されます。書き込まれるデータ(テキストなど) は、ポインタバイト数で指定されたサイズで定義されます。

writeしたがって、3 つの引数を取ります。

  1. ファイル コード (ファイル記述子またはfd )。
  2. データが格納されているバッファへのポインタ( buf )。
  3. バッファから書き込むバイト数 ( nbytes )。

POSIXの使用法

書き込み呼び出しインターフェース[1] [2] [3]はPOSIX仕様で標準化されています。データはwrite関数を呼び出すことでファイルに書き込まれます。関数のプロトタイプは次のとおりです。

 ssize_t書き込み( int fildes const void * buf size_t nbyte );       
口論 説明
フィルデス
open()の呼び出しから取得されたファイル記述子。これは整数値です。標準入力、標準出力、標準エラーにそれぞれ 0、1、2 の値を指定することもできます。
バッファ
filedes が指すファイルに書き込まれる内容を含む文字配列を指します。
バイト
文字配列 buf から filedes が指すファイルに書き込まれるバイト数を指定します。

上記の構文では、ssize_tは ですtypedef。これは で定義されている符号付きデータ型ですstddef.h。はwrite()符号なしの値を返さないことに注意してください。エラーが発生した場合は -1 を返すため、符号付きの値を返す必要があります。
write 関数は、ファイルに正常に書き込まれたバイト数を返します。この数は、指定されたnbytesより少ない場合があります。例外的な状況が発生した場合は -1 を返します。以下のエラーのセクションを参照してください。

リナックス

Linuxでは、writeはシステムコール番号1です。[4]

参照

参考文献

  1. ^ http://www.unix.com/man-page/FreeBSD/2/write/ Write のマニュアルページ
  2. ^ https://www.gnu.org/s/hello/manual/libc/I_002fO-Primitives.html#I_002fO-Primitives I/O プリミティブ
  3. ^ 「書く」。
  4. ^ 「Linux/Arch/X86/Entry/Syscalls/Syscall_64.TBL at master · torvalds/Linux」。GitHub
  • POSIX書き込み
  • ウィキブックの C_Programming/C_Reference/stdio.h/fwrite
「https://en.wikipedia.org/w/index.php?title=Write_(system_call)&oldid=1243035122」から取得