2010-04-28 108 views
2

我想編寫一個命令行實用程序,可用於同步不同控制檯中的執行程序。命令行信號量實用程序

Console A: 
$ first_program && semaphore -signal 

Console B: 
$ semaphore -wait && second_program 

第一個程序需要很長時間才能完成。第二個程序只能在第一個程序結束時啓動。

我需要實現這個同步對象嗎?

+0

我爲命名的Linux信號量寫了一個[命令行實用程序](http://stefan-klinger.de/tools/sem/)。 – 2012-05-19 23:15:51

回答

5

你不需要爲此使用Python。考慮到你使用的是Unix,試試這個:

首先,爲信號量創建一個管道。

mknod /tmp/semaphore p 

然後,節目:

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

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

其實,這種方法是雙向的。讀取將會阻塞直到寫入,反之亦然。

+0

正準備用'mkfifo'寫出完全相同的東西:) – 2010-04-28 21:34:47

0

如果他們在同一臺機器上,第一個程序可以觸摸臨時文件。

python中有一個Gamin模塊,它可以讓你的第二個程序坐在那裏等待,而不佔用資源。這不是一個忙碌的等待,或者做任何與睡眠有關的事情。