我已经意识到这一点open()
并且ioctl()
在 cpp 对象中不起作用。如果在我的main()
函数中调用它,我可以执行该操作,但在我的任何类中都不能。我有一个在我的主循环中运行的对象,它有另一个进行文件系统调用的对象。
所以基本上在主循环中它可以打开(我得到一个 3 的指针并且ioctl
是成功的)。但是,当我在对象中执行此操作时,它会为打开返回 0(这应该不是错误)并且 ioctl 失败。
我知道我不能使用ios::
iostream 选项,因为它们不适用于ioctl
. 如何使常规 ioctl 在 cpp 对象中工作?
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;
}