C言語のwrite関数の使い方は?
C言語では、write 関数でファイルやソケットにデータを書き込むことができます。
関数プロトタイプは次のとおりです。
ssize_t write(int fd, const void *buf, size_t count);
パラメータの説明:
- fd: ファイル記述子またはソケットで、書き込み先の対象ファイルまたはソケットを表す。
- バッファ: 書き込みを行うデータバッファへのポインタ
- 書き込まれるデータのバイト数
戻り値:
- 成功時は、実際に書き込んだバイト数を返します。
- 失敗時には-1を返してerrnoを設定します
以下に、write 関数を使用して文字列をファイルに書き込む方法を示す簡単な例を示します。
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
int main() {
char *str = "Hello, world!";
int fd = open("output.txt", O_WRONLY | O_CREAT, 0644);
if (fd == -1) {
perror("open");
return 1;
}
ssize_t ret = write(fd, str, strlen(str));
if (ret == -1) {
perror("write");
close(fd);
return 1;
}
close(fd);
return 0;
}
上の例では、まずopen関数を使ってoutput.txtという名前のファイルを開いており、もし開けなければ-1を返し、perror関数でエラーメッセージを出力します。次にwrite関数で文字列strをファイルに書き込んで、戻り値をチェックします。最後にclose関数でファイル閉じます。
write関数はブロックするので、大量のデータを書き込むとプログラムがブロックすることがあります。適切なエラー処理を行うには、write関数の戻り値で実際に書き込まれたバイト数を判断します。