I’m coding in C on a linux system. I want to insert a USB flash drive, let udev create the dev nodes (at /dev/sdc and /dev/sdc1, for example), and take an action only when /dev/sdc appears. What I’ve been doing is thinking of this as a wait loop in my C application, waiting for a dev node to be created by the udev daemon. Something like the following:
if( /* /dev/sdc exists */)
{
do_something();
}
else
{
wait();
}
My first problem is, what C library function can go in my if() test to return a value for “/dev/sdc exists.” My second problem is, am I simply approaching this wrongly? Should I be using a udev monitor structure to detect this straight from udev?
You may want to take a look at fstat() from the standard library.
This allows you to do a quick-and-dirty check on the presence/absence of the file and act upon that.
basically you need to:
This is not an elegant solution but answers your question.
The code might need some tuning because I didn’t try it but it should do the trick.
Cheers.