if((err = ioctl(fd, IOC_CARD_LOCK, &lock)) < 0)
{
printf("ioctl failed and returned errno %d \n",err);
}
Run Code Online (Sandbox Code Playgroud)
上面的代码是否正确且编程实践良好?它在我的电脑上编译.即它填充err用的返回值ioctl,并检查是否err是< 0
以上方法是返回IOCTL返回的"错误"的标准方法.
似乎有一些名为errno的标准变量?它是什么?那会和上面一样吗?
我发现了一个更好的方法来做到这一点.
if(ioctl(fd, IOC_CARD_LOCK, &lock) < 0)
{
printf("ioctl failed and returned errno %s \n",strerror(errno));
}
Run Code Online (Sandbox Code Playgroud)
errno是为系统调用设置的全局变量.而strerror将代码(负整数)转换为有意义的字符串(例如"无效参数").
| 归档时间: |
|
| 查看次数: |
10490 次 |
| 最近记录: |