我在寫一個小型庫來處理rs232設備的通信。爲庫函數定義errno值
多數的功能寫在描述符中的幾個字節,等待回覆,analise並返回:
int demo_function(int fd)
{
if (sendcommand(command)==0)
{
if (getreply(buffer)==0)
{
if (buffer == ACK)
return 0; //Success, returns 0
else if (buffer == NACK)
return -1; //Error, Nack received
else
return -1; //Error, unexpected answer
}
else
return -1; //Error, Timeout
}
else
return -1; //Error, send failled.
}
我想追隨儘可能的標準,所以我返回0成功時,錯誤-1。我需要定義我應該在errno中設置的值。
- 未收到:我找不到適合此情況的任何錯誤。
- 意外的答案:EBADMSG。
-Timeout:ETIME或ETIMEDOUT。
-Send failled:EIO?
我應該爲NACK案例使用什麼樣的錯誤,並且在其他案例中的錯誤編號是否合適?或者我應該呆在地獄之外,並找到另一種方式報告錯誤(如不同的返回值)?
你會使用負值還是負值來計算錯誤?我仍然在試圖讓我的腦海裏,因爲一些錯誤可以進一步的細節(寫和讀faillures的sendcommand和功能的getreply內)報告。在另一方面,我也許不能涵蓋所有的faillure情況下,也許我應該置身事外。 –