我意识到open()
和ioctl()
在cpp对象中不起作用。如果在我的main()
函数中调用它,我可以执行该操作,但在我的任何类中都没有。我有一个在我的主循环中运行的对象,它有另一个使文件系统调用的对象。
所以基本上在主循环中它可以打开(我的指针得到3,ioctl
成功)。但是当我在对象中执行它时,它返回0表示打开(这不应该是错误)并且ioctl失败。
我知道我无法使用ios::
iostream选项,因为它们不适用于ioctl
。如何在cpp对象中定期进行ioctl工作?
int add=0x4b;
int i2c_bus;
if(( i2c_bus = open( "/dev/i2c-0", O_RDWR )) < 0 )
{
printf("Unable to open file /dev/i2c-0.\n");
}
if( ioctl( i2c_bus, I2C_SLAVE, add ) < 0 )
{
printf("Open chip %d FAILED file %d\n",add, i2c_bus);
return -1;
}
else
{
printf("Open chip %d Succeeded file %d\n\n",add, i2c_bus);
return 1;
}
答案 0 :(得分:2)
您已将open
的结果分配给i2c_bus
,但您在ioctl中使用了fd
。从main
移动后,您是否更改了变量名称?