3
if((err = ioctl(fd, IOC_CARD_LOCK, &lock)) < 0)
{
     printf("ioctl failed and returned errno %d \n",err);
}

上記のコードは正しく、適切なプログラミング方法ですか? それは私のPCでコンパイルされます。つまりerr、の戻り値が入力されているioctlかどうかを確認しerrます< 0

上記のメソッドは、IOCTL によって返された "err" を返す標準的な方法ですか。

errno という標準変数があるようですが?それは何ですか?上と同じになるのでしょうか?

4

2 に答える 2

12

これを行うためのより良い方法を見つけました。

if(ioctl(fd, IOC_CARD_LOCK, &lock) < 0)
{
     printf("ioctl failed and returned errno %s \n",strerror(errno));
}

errno は、システム コール用に設定されるグローバル変数です。strerror は、コード (負の整数) を意味のある文字列 (「無効な引数」など) に変換します。

于 2013-02-19T22:12:58.683 に答える