mmap and select

I'm using select() to monitor multiple file descriptors (inet sockets) in application. But this application must also collaborate with other applications on the same host via shared memory (mmap'ed file) due to performance reasons. How can I become notification that mmaped memory is changed or semaphore state changed when the application is blocked in select()? For instance, can I perform select() (or epoll()) on the file descriptor that is mapp'ed to memory or should I use signals or something else?

Interesting issue but not enough details . Signals for process based and pthread_cond_wait for threaded apps I'd think. The blocking you mentioned in select() makes the use of epoll or more sophisticated event mechanisms a little problematic. You may run into performance problems based on this alone.