2017-09-23 15 views
-2

"open"に問題があります。 ttyACM3という名前のデバイスがない場合でも、エラーは返されません。常に「no error」を出力します。Linux公開の問題

何が問題なのですか?

fd = open("/dev/ttyACM3", O_RDWR); 
if(fd) 
{ 
    printf("no error"); 
} 
else 
{ 
    printf("error"); 
} 
+1

'open'の仕様、特に戻り値のセクションを読んでください。 –

答えて

1

このライン:

if(fd) 

fd == -1をtrueに評価されます、openがエラーを返す方法です。 openは、0ではなく、-1を返します。将来的には

はより慎重にドキュメントを読む:)

またif (fd)はあなたが思っていた場合には、負の数に対してtrueに評価されます。ポートのdoesntが存在する場合

+0

インターネットが遅い:/あなたが既に答えたのを見た – sziraqui

1

()

オープン()場合は、正しい条件を提供していないが、負の値を返します。正しいコードは次のようになりますので

if(fd > 0) 

Thisチュートリアルが便利かもしれません。

関連する問題