James, thank you very much, for your clear explanation. El 20/05/2015 20:07, "James Cameron" <qu...@laptop.org> escribió:
> On Wed, May 20, 2015 at 10:43:23AM -0300, Gustavo Duarte wrote: > > Notificator: There is a Sugar Activity who shows Notification messages > > for the kid. > > > > Daemon: There is an script running on cron, who get new notification > > from a Server. > > > > I need communicate the Daemon with the Notificator, so when Daemon > > receive a new notification from Server, it'll send a signal to > > Notificator. > > > > Notificator when receive the signal, should refresh a widget. > > > > I know a way to do that, using system signals, but i wonder if Sugar > > has another way to achieve that. > > What you describe is interprocess communication. > > Sugar uses several methods for communication with system daemons. > > The most frequently coded is D-Bus. > http://en.wikipedia.org/wiki/D-Bus > > Other methods in Python are > https://docs.python.org/2/library/ipc.html > > You can use files, as Gonzalo says, but try to place them in a path > that does not cause writes to disk; e.g. /tmp ... otherwise sometimes > the kernel will reschedule the process that is writing, and this can > slow performance. > > My preference for your scenario is signals: > > 1. Notificator calls os.getpid and writes to /tmp/notificator.pid > > 2. Notificator calls signal.signal to request a callback on SIGUSR1, > > 3. Daemon reads /tmp/notificator.pid and calls os.kill(pid, SIGUSR1), > kill(1), or kill(3) to send signal. > > An example here: > http://dev.laptop.org/git/projects/runin/tree/runin-gtk > > Signals become more complex if the communication is complex, and there > are a limited number of different signals. That's when I would > suggest D-Bus. > > -- > James Cameron > http://quozl.linux.org.au/ >
_______________________________________________ Sugar-devel mailing list Sugar-devel@lists.sugarlabs.org http://lists.sugarlabs.org/listinfo/sugar-devel