#include #include #include #include #include #include #include int main(int argc, char* argv[]) { openlog("justopen.c", 0, LOG_DAEMON); if (argc == 2) { struct stat stat_buf; int stat_success = 0; int fd = open(argv[1], O_RDONLY); if (fd != -1) syslog(LOG_DAEMON | LOG_DEBUG, "Opening %s OK", argv[1]); else syslog(LOG_DAEMON | LOG_DEBUG, "Opening %s failed: %s", argv[1], strerror(errno)); stat_success = stat(argv[1], &stat_buf); if (stat_success != -1) syslog(LOG_DAEMON | LOG_DEBUG, "Statting %s OK", argv[1]); else syslog(LOG_DAEMON | LOG_DEBUG, "Statting %s failed: %s", argv[1], strerror(errno)); // Empirically found magic delay, after which USB devices appear. usleep(10000); syslog(LOG_DAEMON | LOG_DEBUG, "Delay!"); fd = open(argv[1], O_RDONLY); if (fd != -1) syslog(LOG_DAEMON | LOG_DEBUG, "Opening %s OK", argv[1]); else syslog(LOG_DAEMON | LOG_DEBUG, "Opening %s failed: %s", argv[1], strerror(errno)); stat_success = stat(argv[1], &stat_buf); if (stat_success != -1) syslog(LOG_DAEMON | LOG_DEBUG, "Statting %s OK", argv[1]); else syslog(LOG_DAEMON | LOG_DEBUG, "Statting %s failed: %s", argv[1], strerror(errno)); } return 0; }