命令行信号量实用程序

Posted

技术标签:

【中文标题】命令行信号量实用程序【英文标题】:Command line semaphore utility 【发布时间】:2010-04-28 21:17:36 【问题描述】:

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

Console A: 
$ first_program && semaphore -signal

Console B:
$ semaphore -wait && second_program

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

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

【问题讨论】:

我为命名的 Linux 信号量写了一个command line utility。 【参考方案1】:

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

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

mknod /tmp/semaphore p

然后,程序:

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

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

实际上,这种方法是双向的。读取将阻塞,直到有写入,反之亦然。

【讨论】:

正要使用mkfifo 写完全相同的东西:)【参考方案2】:

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

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

【讨论】:

以上是关于命令行信号量实用程序的主要内容,如果未能解决你的问题,请参考以下文章

DOS命令行(11)——更多实用的命令行工具

Win XP 中命令行实用程序的代理

使用 MSBuild 命令行实用程序时出错

确定HPC命令行实用程序的(Azure)OAuth2授权流程

是否有用于呈现 GitHub 风格的 Markdown 的命令行实用程序?

将 args 传递给 JS 命令行实用程序(Node 或 Narwhal)