Command line 命令行信号量实用程序

Command line 命令行信号量实用程序,command-line,synchronization,semaphore,utility,Command Line,Synchronization,Semaphore,Utility,我想写一个命令行实用程序,可以用来同步不同控制台中程序的执行 Console A: $ first_program && semaphore -signal Console B: $ semaphore -wait && second_program 第一个程序需要很长时间才能完成。第二个程序只能在第一个程序完成后启动 我需要哪个同步对象来实现这一点?如果它们在同一台机器上,第一个程序可以接触一个临时文件 python中有一个Gamin模块,它允许您的第二个

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

Console A: 
$ first_program && semaphore -signal

Console B:
$ semaphore -wait && second_program
第一个程序需要很长时间才能完成。第二个程序只能在第一个程序完成后启动


我需要哪个同步对象来实现这一点?

如果它们在同一台机器上,第一个程序可以接触一个临时文件


python中有一个Gamin模块,它允许您的第二个程序在不占用资源的情况下坐在那里等待。这不是一个繁忙的等待,也不是在做任何与睡眠有关的事情。

你不需要使用Python来实现这一点。考虑到您正在使用Unix,请尝试以下操作:

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

mknod /tmp/semaphore p
然后,程序:

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

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

实际上,这种方法是双向的。读操作将一直阻塞,直到有写操作为止,反之亦然。

正准备使用mkfifo编写完全相同的内容:我已经为命名的Linux信号量编写了一个。