私は、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、エラーの場合は-1です。私はerrnoに設定する必要がある値を定義する必要があります。
-Nack received:このケースに合ったエラーは見つかりませんでした。
- 不思議な答え:EBADMSG。
-Timeout:ETIMEまたはETIMEDOUT。
-終了:EIO?
NACKの場合はどのようなエラーを使用する必要がありますか?それ以外の場合はエラー番号が適切ですか?または、私はerrnoの地獄から離れて、エラーを報告する別の方法(別の戻り値のようなもの)を見つけるべきですか?
エラーに負の整数または正の整数を使用しますか?私はまだいくつかのエラーを詳細に報告することができます(sendコマンドとgetreply関数の中で、failluresの書き込みと読み取り)。一方、私はおそらく、すべてのfaillureのケースをカバーすることはできませんので、多分私はそれを避ける必要があります。 –