#PS:要轉載請註明出處,本人版權所有
#PS:這個只是 《 我自己 》理解,如果和你的
#原則相沖突,請諒解,勿噴
system info :Linux 4.2.0-27-generic #32~14.04.1-Ubuntu SMP Fri Jan 22 15:32:26 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
安裝libcurl的方法
sudo apt install libcurl4-openssl-dev libcurl3
實際遇到的問題
在一個ARM_Linux的程序中,涉及到用curl_easy_perform上傳json數據到後臺和用curl_easy_perform模擬表單上傳帶圖片和文件的數據。
在上傳的過程中,出現了讓人費解的情況:在上傳json數據的時候一切正常,但是上傳帶圖像的表單數據的時候,出現了訪問非法地址的問題(signal 11 - SIGSEGV)。
網上的一系列可能導致此問題的原因
1 curl_global_init()和curl_global_cleanup() 調用線程不安全,可能會導致程序異常退出,需要注意。
2 多線程環境下,https請求時,由於libopenssl 不支持多線程,出現crash,這裏需要在調用libcurl之前,先設置openssl的 互斥鎖 回調接口,這樣才能保證線程安全。
3 libcurl庫的debug和release混用的問題,就是說release程序用release庫,debug程序用debug庫。
結論
經過測試,發現就是第三個原因導致的我程序崩潰,可是爲何debug和release只對在上傳表單的時候crash起作用,而在post上傳普通數據的時候無異常?這裏就留個有緣人去測試吧,希望哪個大佬,找出原因了告訴我!!!
#PS:請尊重原創,不喜勿噴
#PS:要轉載請註明出處,本人版權所有.
有問題請留言,看到後我會第一時間回覆