我想編寫一個命令行實用程序,可用於同步不同控制檯中的執行程序。命令行信號量實用程序
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