// Compile with gcc tce-notify.c -o tce-notify #define _GNU_SOURCE /* needed to get the defines */ #include /* in glibc 2.2 this has the needed values defined */ #include #include #include static volatile int event_fd; static volatile int event_sig; static volatile void *event_data; static void handler(int sig, siginfo_t *si, void *data) { event_fd = si->si_fd; event_sig = sig; event_data = data; } int main(void) { struct sigaction act; int fd; act.sa_sigaction = handler; sigemptyset(&act.sa_mask); act.sa_flags = SA_SIGINFO; sigaction(SIGRTMIN + 1, &act, NULL); fd = open("/usr/local/tce.installed", O_RDONLY); fcntl(fd, F_SETSIG, SIGRTMIN + 1); fcntl(fd, F_NOTIFY, DN_ACCESS|DN_MODIFY|DN_CREATE|DN_RENAME|DN_DELETE|DN_ATTRIB|DN_MULTISHOT); while (1) { pause(); system("/sbin/depmod -a 2>/dev/null"); system("/sbin/udevtrigger"); system("/sbin/ldconfig 2>/dev/null"); printf("System updated!"); } }