c++ - 使用C++应用程序写入/sys/bus/usb/drivers_probe

标签 c++ linux linux-kernel usb

我正在尝试制作应阻止某些USB设备的C / C++应用程序。

我有类似的问题描述here,但是现在我需要将该解决方案实现到C++中。我只需要在/sys/bus/usb/drivers_probe中写一些字符串即可。我尝试了类似的东西:

ofstream fDriversProbe;
fDriversProbe.open("/sys/bus/usb/drivers_probe", ios::out | ios::binary | ios::app);

if(!fDriversProbe)
{
   cout << "Could not open file drivers_probe.";
}

fDriversProbe.write("1-1:1.1", strlen("1-1:1.1"));

if(!fDriversProbe.good())
{
   cout << "Could not write data to file\n";
}

不会带来任何错误或警告,但似乎也不起作用。

然后,我决定从代码执行工作命令。
system("sudo sh -c \"echo 1-1:1.1 > /sys/bus/usb/drivers_probe\"");

要么
system("echo 1-1:1.1 | sudo tee /sys/bus/usb/drivers_probe");

没有运气。当我从终端手动执行相同的命令(具有相同的界面)时,一切正常,USB设备开始工作。

最佳答案

您是否尝试在每次写入后刷新ofstream对象,即fDriversProbe.flush()。在尝试使用驱动程序导出的sysfs属性来馈送相机快门和获取参数时,我遇到了类似的问题,但是设置未达到驱动程序。对sysfs文件的写入以及随后的刷新都为我解决了该问题。

关于c++ - 使用C++应用程序写入/sys/bus/usb/drivers_probe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61034108/

相关文章:

xml - 如何grep一个巨大的XML文件?

linux - 什么是私有(private)页面?

linux - 如何知道 crontab 中的任务是否实际执行

linux - 从用户空间的程序调用内核模块函数

linux-kernel - kmalloc 标志中的 GFP 是什么意思?

linux-kernel - 如何知道Linux中哪个CPU中断处理程序被处理

c++ - 嵌套类。错误 : expected parameter declarator - for inner class instance

c++ - 如何使用自定义类声明数组?

c++ - 如何使指针指向二维数组的任意数组元素?

c++ - msleep 在哪里声明?