命令行信号量实用程序

时间:2010-04-28 21:17:36

标签: command-line synchronization semaphore utility

我想编写一个命令行实用程序,可用于同步不同控制台中程序的执行。

Console A: 
$ first_program && semaphore -signal

Console B:
$ semaphore -wait && second_program

第一个程序需要很长时间才能完成。第二个程序只能在第一个程序完成时启动。

我需要使用哪个同步对象来实现它?

2 个答案:

答案 0 :(得分:5)

您不需要使用Python。考虑到你使用的是Unix,试试这个:

首先,为信号量创建一个管道。

mknod /tmp/semaphore p

然后,程序:

Console A:
$ first_program && echo a > /tmp/semaphore

Console B:
$ read < /tmp/semaphore && second_program

实际上,这种方法有两种方式。读取将阻塞,直到写入,反之亦然。

答案 1 :(得分:0)

如果他们在同一台机器上,则第一个程序可以触摸临时文件。

python中有一个Gamin模块,它允许你的第二个程序坐在那里等待而不是占用资源。这不是一个忙碌的等待,或做任何有睡眠的事情或类似的东西。