[英]Impact of not handling the return code CURLM_CALL_MULTI_PERFORM of curl_multi_perform()
我目前正在研究 libcurl multi API。
我很好奇如果我跳過檢查 curl_multi_perform() 中的 CURLM_CALL_MULTI_PERFORM 返回代碼會發生什么。
根據https://linux.die.net/man/3/curl_multi_perform
如果您收到 CURLM_CALL_MULTI_PERFORM,這基本上意味着您應該在 select() 執行更多操作之前再次調用 curl_multi_perform。 您不必立即執行此操作,但返回代碼意味着 libcurl 可能有更多數據可用於返回,或者在“滿意”之前可能有更多數據要發送。 請注意,curl_multi_perform(3) 僅在想要立即再次調用時才返回 CURLM_CALL_MULTI_PERFORM。 當一切正常並且沒有任何事情要立即完成時,它將返回 CURLM_OK 並且您需要等待“操作”,然后再次調用此 function。
有人有什么主意嗎? 我正在使用 libcurl 版本 7.65.3,我的驅動程序代碼使用 C 語言。 謝謝!
CURLM_CALL_MULTI_PERFORM
自 curl 7.20 起已棄用,並且永遠不會返回,如 10 年前記錄的那樣。
棄用的原因是很少正確使用該功能,存在許多錯誤和誤解。 因此,由於 7.20.0 CURLM_CALL_MULTI_PERFORM 不再存在。
我建議您查閱官方手冊curl_multi_perform而不是 3rd 方手冊頁。
這是curl_multi_perform()
有趣的部分:
data = multi->easyp;
while(data) {
CURLMcode result;
SIGPIPE_VARIABLE(pipe_st);
sigpipe_ignore(data, &pipe_st);
result = multi_runsingle(multi, &now, data);
sigpipe_restore(&pipe_st);
if(result)
returncode = result;
data = data->next; /* operate on next handle */
}
正如它所說,有些數據不會被處理(通過multi_runsingle()
),這取決於你在飛行中擁有什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.