我在Linux系统上用C编码 . 我想插入一个USB闪存驱动器,让udev创建开发节点(例如/ dev / sdc和/ dev / sdc1),并仅在出现/ dev / sdc时执行操作 . 我一直在做的是把它当作我的C应用程序中的等待循环,等待udev守护进程创建一个dev节点 . 类似于以下内容:
if( /* /dev/sdc exists */)
{
do_something();
}
else
{
wait();
}
我的第一个问题是,在我的if()测试中,C库函数可以返回“/ dev / sdc exists”的值 . 我的第二个问题是,我只是错误地接近了这个问题吗?我应该使用udev监视器结构直接从udev检测到这个吗?
2 回答
您可能需要查看标准库中的fstat() . 这允许您对文件的存在/不存在进行快速而肮脏的检查并对其进行操作 . 基本上你需要:
这不是一个优雅的解决方案,但回答你的问题 . 代码可能需要一些调整,因为我没有尝试,但它应该做的伎俩 .
干杯 .
您可能想要使用udev规则 .
Running external programs upon certain events