You may want to look into dbus, which is designed to streamline inter-process communication (though the dbus daemon needs to be running). Another option would be to create a shared memory mapping by mmapping a file, though that could get really complex. Either of these options would require that both programs use dbus/mmapping respectively.
Sorry I don't have clear details about the FIFO option, but hopefully the next poster will
