我想编写一个命令行实用程序,可用于同步不同控制台中的执行程序。命令行信号量实用程序
Console A:
$ first_program && semaphore -signal
Console B:
$ semaphore -wait && second_program
第一个程序需要很长时间才能完成。第二个程序只能在第一个程序结束时启动。
我需要实现这个同步对象吗?
我想编写一个命令行实用程序,可用于同步不同控制台中的执行程序。命令行信号量实用程序
Console A:
$ first_program && semaphore -signal
Console B:
$ semaphore -wait && second_program
第一个程序需要很长时间才能完成。第二个程序只能在第一个程序结束时启动。
我需要实现这个同步对象吗?
你不需要为此使用Python。考虑到你使用的是Unix,试试这个:
首先,为信号量创建一个管道。
mknod /tmp/semaphore p
然后,节目:
Console A:
$ first_program && echo a > /tmp/semaphore
Console B:
$ read < /tmp/semaphore && second_program
其实,这种方法是双向的。读取将会阻塞直到写入,反之亦然。
正准备用'mkfifo'写出完全相同的东西:) – 2010-04-28 21:34:47
如果他们在同一台机器上,第一个程序可以触摸临时文件。
python中有一个Gamin模块,它可以让你的第二个程序坐在那里等待,而不占用资源。这不是一个忙碌的等待,或者做任何与睡眠有关的事情。
我为命名的Linux信号量写了一个[命令行实用程序](http://stefan-klinger.de/tools/sem/)。 – 2012-05-19 23:15:51