我在Linux系统上用C编码。我想插入一个USB闪存驱动器,让udev创建dev节点(例如,在/dev/sdc和/dev/sdc1处),并仅在/dev/sdc出现时采取措施。我一直在做的是将其视为C应用程序中的一个等待循环,等待udev守护程序创建一个dev节点。类似于以下内容:
if( /* /dev/sdc exists */)
{
do_something();
}
else
{
wait();
}
我的第一个问题是,在if()测试中可以使用哪些C库函数来返回“/dev/sdc存在”的值。我的第二个问题是,我只是错误地对待了吗?我是否应该使用udev监视器结构直接从udev中检测到这一点?
最佳答案
您可能需要看一下标准库中的fstat()。
这使您可以对文件的存在/不存在进行快速检查,然后采取措施。
基本上,您需要:
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
....
struct stat s;
stat( "/pat/to/node" , &s );
if ( IS_BLK(s.st_mode) ) {
/* the file exists and is a block device */
}
这不是一个很好的解决方案,但可以回答您的问题。
该代码可能需要进行一些调整,因为我没有尝试过,但是应该可以解决问题。
干杯。
关于c - 如何检测或测试USB闪存驱动器插入的UNIX/Linux开发节点创建,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7041997/