errno
失败时是否可能获得错误代码(如curl_easy_strerror
)或错误描述(如curl_easy_init
)?
答案 0 :(得分:3)
不。无法找到原因。从该库的7.58.0版本的源代码...
struct Curl_easy *curl_easy_init(void) {
CURLcode result;
struct Curl_easy *data;
// Etc..
result = Curl_open(&data);
if (result) {
DEBUGF(fprintf(stderr, "Error: Curl_open failed\n"));
return NULL;
}
return data;
}
如您所见,如果Curl_open(...)
失败,则库仅输出错误并中止:它不会修改任何状态变量,例如errno
,您可以稍后检查以确定该原因的原因。失败。
但是,如果您的呼叫失败,则可能是因为curl_global_init()
失败了。如果您自己事先没有{@ {1}}会自动调用它。 curl_easy_init()
-与
curl_global_init()
-实际上会返回错误代码。
故事的道德感...
调用curl_easy_init()
之前,请先调用curl_global_init(...)
并检查其返回值。不要依靠curl_easy_init()
自动完成操作。
这至少可以让您识别curl_easy_init()
或curl_global_init(...)
是否失败。
例如
Curl_open()