ファイルに原子的に書き込みたいと思っています。ほとんどのlinux/unixシステムでアトミック書き込みを許可しているようですのでwrite()
関数を使用しようとしています。Snprintf()でWrite()を使ってファイルに原子的に書き込み
私は文字列変数の長さと、複数のprintfのを持っているので、私は私がやったこの関数のドキュメントを読めば、これを適切に行うことができるようにするためにsnprintf()
を使用すると、書き込み関数の引数として渡すように言われましたテスト実装、次のように:働いているようだが、私はむしろ、大きなバッファ(何か私は100%を確認してください意志を作成していますので、これはそれを実装するための最も正しい方法であれば、私の質問は
int file = open("file.txt", O_CREAT | O_WRONLY);
if(file < 0)
perror("Error:");
char buf[200] = "";
int numbytes = snprintf(buf, sizeof(buf), "Example string %s" stringvariable);
write(file, buf, numbytes);
私のテストから、すべての私のprintfsに合う)を書いて渡す前にそれを保存する。
'INT NUMBYTES =のsnprintf(BUF、はsizeof(BUF)、 "例列%S" stringvariable);'のsnprintf() 'そのコードにはsizeof 'よりも大きい値を返すことができることに注意してください(BUF ) '結果の完全な出力文字列が' buf'に収まらない場合は ' –