我有一个可执行的(无源)需要包装,以确保一次不超过一次。我立即想到了某种队列包装器,但是我该如何实际制作,以便将包装器称为代替可执行文件本身?有一个更好的方法吗?该解决方案需要看不见,因为用户是其他应用程序。任何信息/建议将不胜感激。

有帮助吗?

解决方案

方法1:将可执行文件放在某个位置,而不是在标准路径中。创建一个检查Sentinel文件的Shell脚本,如果缺少Sentinel文件,请执行程序,等待Ptogram完成,然后删除Sentinel文件。如果存在前哨文件,则该脚本将输入一个短延迟(1秒钟?该程序的标准执行多长时间?将其拿多长时间?将其放置多长时间),然后再次检查句子文件,依此类推。

方法2:创建一个与脚本相同的单独程序,但使用系统级信号量或锁定。您甚至可以简单地在文件上使用读/写锁。该程序将在真实程序上执行叉()和exec(),在清除前哨之前等待儿童退出。

其他提示

如果用户是其他应用程序,则可以将可执行文件重命名(例如名称 - > name.Real),然后用原始名称调用包装器。为了确保一次只调用一次,您可以使用 pidof 命令(例如 pidof name.real)检查程序是否已经在运行(pidof 实际上为您提供了运行过程的PID,因此您可以使用诸如 kill 或任何向其发送信号的东西)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top