C言語ライブラリにおけるwrite関数の使用法
C言語では、write関数はファイルまたは標準出力にデータを書き込むために使用できます。その関数のプロトタイプを次に示します。
#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t count);
本関数の引数は以下のように解釈してください。
- fd: ファイル記述子を表します。これは、ファイルの記述子(open 関数で取得)としても、標準出力の記述子(1 を使用)としても使用できます。
- buf:書き込むデータの格納されるバッファーへのポインタ
- カウント:書き込むデータのバイト数を表します。
関数は書き込まれたバイト数を返すが、エラーの場合は -1 を返す。
標準出力にデータを書き込むwrite関数を使用した例を以下に示す。
#include <unistd.h>
int main() {
char *str = "Hello, World!";
ssize_t ret = write(1, str, strlen(str));
if (ret == -1) {
perror("write");
return 1;
}
return 0;
}
上記例では、文字列「Hello, World!」を標準出力(ターミナル)に書き込みます。write 関数を使用する際は、以下に注意してください。
- 書き込むデータは、0終端された文字配列または文字列である必要があります。
- unistd.hのインクルードが必要です。
- ファイルディスクリプタ1を標準出力として使用します。
- strlen関数を使用して書き込むべきデータのバイト数を取得できます。
システムコールであるwrite関数は、実際に書き込んだバイト数よりも少ない値を返す可能性があるので、返り値に応じて適切な処理が必要となる。