That's actually how it works: headphoned installs a I/O watch that gets executed every time the state file changes (which is only when the headphones get plugged/unplugged). After that, it notifies all known media players and then returns to the main loop which again is waiting for I/O (by blocking on the state file). If you use "ps", you should see that headphoned is sleeping ("S") most of the time. The only thing that headphoned uses constantly is a bit of your main memory. See http://git.maemo.org/git/headphoned/...c/headphoned.c