書き込み(システムコール)
書き込みは、Unix 系オペレーティング システムカーネルが提供する最も基本的なルーチンの 1 つです。ユーザーが宣言したバッファから、ファイルなどの特定のデバイスにデータを書き込みます。これは、システム コールを直接使用してプログラムからデータを出力する主な方法です。出力先は数値コードで識別されます。書き込まれるデータ(テキストなど) は、ポインタとバイト数で指定されたサイズで定義されます。
write
したがって、3 つの引数を取ります。
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]
参照
参考文献
- ^ http://www.unix.com/man-page/FreeBSD/2/write/ Write のマニュアルページ
- ^ https://www.gnu.org/s/hello/manual/libc/I_002fO-Primitives.html#I_002fO-Primitives I/O プリミティブ
- ^ 「書く」。
- ^ 「Linux/Arch/X86/Entry/Syscalls/Syscall_64.TBL at master · torvalds/Linux」。GitHub。