不要相信 errno 可靠

2021-06-19 11:03:43 字數 695 閱讀 7816

最近發現第3方提供的 api, 引起記憶體不斷增大,**如下:

int retval = kill(pshareddata->regbuffpids[i],0);

if (retval == 0)

else

if (errno == eperm)

else if (errno == einval)

else if (errno == esrch)

它用 kill(pid,0) 檢查程序是否存在,不存在,就釋放共享記憶體。

但其實我們發現執行 loge() , errno 期望是3, 但卻變成 2 ,原來我們自己改動過的 loge() 中呼叫了 localtime, 它讀不到時區檔案,所以把 errno 設定成 2

因此不要相信 errno 可靠, 有必要先用臨時變數儲存。

int retval = kill(pshareddata->regbuffpids[i],0);

int errnoval = errno;

if (retval == 0)

else

if (errnoval == eperm)

else if (errnoval == einval)

else if (errnoval == esrch)

不要相信 errno 可靠

最近發現第3方提供的 api,引起記憶體不斷增大,如下 int retval kill pshareddata regbuffpids i 0 if retval 0 else if errno eperm else if errno einval else if errno esrch 它用 ki...

不要輕易相信ALV

近日發現一詭異顯現,2lis 02 scl採購資料上傳時,資料量字段 例如cpquabu 資料上到dso時,數量被放大了十倍 如psa數量為6,到了dso後變為60 經除錯,例程中未做任何處理。但是執行報表的時候資料顯示又是正確的。原來是alv在作怪。用alv顯示dso資料時,系統自動調整小數字數為...

千萬不要相信客戶的話

今天徒弟突然發飛信給我,截圖如下 我們在維護永和豆漿的收銀系統,當徒弟發給我這個訊息的時候,我的第乙個想法就是,資料庫千萬別弄沒了。我趕緊過去通過qq遠端他們的電腦,找了一圈沒有找到資料庫檔案。然後我就問客戶為什麼沒有和我們說一下就重灌系統,並且資料庫檔案並不在系統盤,怎麼會沒了呢?客戶說是孩子玩兒...