Linuxのwrite()関数の使用方法を教えてください。
Linuxにおいて、write()関数はファイル記述子にデータを書き込むために使用されます。関数のプロトタイプは次のとおりです。
ssize_t write(int fd, const void *buf, size_t count);
パラメーターの説明:
- fd:ファイルディスクリプタ。データ書き込み先のファイルを指します。
- buf:書き込むべきデータのバッファ
- count: 書き込むデータのバイト数。
関数が返却する値:
- 正常終了時には、実際に書き込まれたバイト数を返す。
- 失敗時は、-1を返してerrno変数にエラーの種類を設定します。
write()関数を用いるとき、ファイルディスクリプタの有効性と書き込み権限が確保されている必要があります。なお、write()関数はブロッキング関数で、データの書き込み中は完了するまで、あるいはエラーが発生するまで待ちます。
次に、write()関数を用いてファイルにデータを書く方法を説明する簡単な例を示します。
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
int main() {
int fd = open("example.txt", O_WRONLY | O_CREAT, 0644);
if (fd == -1) {
perror("open");
return 1;
}
const char *data = "Hello, world!";
ssize_t bytes_written = write(fd, data, strlen(data));
if (bytes_written == -1) {
perror("write");
close(fd);
return 1;
}
close(fd);
return 0;
}
このサンプルでは、open()関数で”example.txt”というファイルをオープンし、オープンモードは書き込み専用(O_WRONLY)、ファイルの作成(O_CREAT)を設定しています。その後、文字列を定義して、write()関数でファイルに書き込みます。最後に、close()関数でファイルディスクリプタを閉じます。
実際の使用では「write()」関数はエラー処理が必要な可能性があるので、エラー発生時に適宜処理を行ってください。