C++ でバッファからファイルにバイトC++
を書き込むコールバック関数を設計しています。size_t size
ただし、正気を保つために、 がなどをfwrite
返すかどうかを確認する必要があります。関数自体はとの間のインターフェースです。案の定、擬似コード (ほぼ本物のコード) が書かれています。errno
EACESS
C
C++
static size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream){
int nwritten = size;
while(nwritten > 0){
int written = fwrite(ptr, size, nmemb, (FILE*)stream);
if(written < 0 && errno == EACESS){
// try again
written = 0;
}
/* check some other errors which may be recoverable
nwritten -= written;
}
関数自体はlibcurlから呼び出されます。
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
ポイントは、size_t written = size
バイトがファイルに書き込まれたことを確認することです。fwrite
代わりに他のメソッドを使用している理由は、関数write_data
がコールバックとしてHTTP
リクエストを実行し、ファイル転送を行い、ファイルの内容をローカル ファイルに書き込むメソッドに渡されるためです。このアプローチが機能するかどうかはわかりません。このアプローチが機能するかどうか、または潜在的な問題を教えてください。より良いアプローチがあれば?ありがとう