如何恰好运行一个程序的1个实例。或如何测试特定的正在运行的程序

牛丹妮

如何将一个程序的1个实例作为一个进程运行?或者,如何测试正在运行的程序的存在?

便携式方法是优选的。

牛丹妮

可以测试(命名的)管道的可写性,并通过适当的编程来测试正在运行的程序实例的存在性。

假设我们保留一个文件名/tmp/fifo-myapp作为FIFO文件的名称(应为每个不同的应用程序自定义;它通常驻留在一些特定于应用程序的文件夹中,并指定为绝对路径):

文件1: test-wr-fifo

#!/bin/sh
# invocation: test-wr-fifo <timeout>

timeout="${1:=3}"

if ! [ -p "/tmp/fifo-myapp" ] ; then
    rm -f "/tmp/fifo-myapp"
    mkfifo "/tmp/fifo-myapp"
fi

{ sleep "$timeout" ; kill -s 0 $$ && kill -s TERM $$ ; } &
exec 3>"/tmp/fifo-myapp"

当FIFO未打开且已达到指定的超时时间时,该程序将以不成功的状态退出。

文件2: single-inst-prog

#!/bin/sh

exec 3<"/tmp/fifo-myapp"

### Application Code ###

这是我们只需要1个实例的程序。

调用single-inst-prog

./test-wr-fifo || ./single-inst-prog &

此方法之所以有效,是因为FIFO一端的打开会阻塞(当O_NONBLOCK清零时),直到另一端也打开为止。此方法之所以有效,是因为我们没有从FIFO读取任何数据或向FIFO写入任何数据,因此永远不会发出EOF条件和SIGPIPE信号。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

终止正在运行的应用程序C#的一个特定会话

来自分类Dev

如何创建一个守护程序来检查程序是否正在运行(定期运行),如果没有运行则启动它?

来自分类Dev

AWS ECS。如何确保仅一个任务实例正在运行?

来自分类Dev

如何查看Beaglebone上另一个root实例正在运行的进程

来自分类Dev

如果同一个实例已经在运行,如何关闭javax应用程序?

来自分类Dev

如何使用一个驱动程序实例运行c#多个硒单元测试?

来自分类Dev

如果我同时通过 snap 和 APT 安装了一个应用程序,我如何知道当前正在运行的是哪个应用程序?

来自分类Dev

从一个应用程序终止另一个正在运行的应用程序

来自分类Dev

如何运行一个程序并在运行程序时定期检查输出是否存在

来自分类Dev

如果另一个 APT 实例正在运行,如何让包管理器等待?

来自分类Dev

我如何检测正在运行的特定应用程序

来自分类Dev

如何找到进程中正在运行的特定程序?

来自分类Dev

编写一个简单的批处理文件,检查程序是否正在运行

来自分类Dev

最大化另一个正在运行的程序的窗口

来自分类Dev

可以从终端取一个正在运行的应用程序吗?

来自分类Dev

我正在运行一个程序,并遇到此错误。这是什么意思?

来自分类Dev

可以从终端取一个正在运行的应用程序吗?

来自分类Dev

从终端切换到另一个正在运行的应用程序

来自分类Dev

最大化另一个正在运行的程序的窗口

来自分类Dev

我如何有一个实时计时器,每秒更新一次,以查看我的程序正在运行多少?蟒蛇

来自分类Dev

如何限制在MFC中一次仅运行一个应用程序实例

来自分类Dev

如何测试执行了另一个可运行程序的可运行程序

来自分类Dev

检查程序的另一个实例是否已在运行

来自分类Dev

如何踢出正在运行的程序?

来自分类Dev

apt如何升级正在运行的程序?

来自分类Dev

如何在一个EC2实例上运行多个应用程序?

来自分类Dev

如何制作一个“模块化”的Java程序,该程序在运行时会更新?

来自分类Dev

QBasic:如何从另一个程序中运行一个程序?

来自分类Dev

QBasic:如何从另一个程序中运行一个程序?

Related 相关文章

  1. 1

    终止正在运行的应用程序C#的一个特定会话

  2. 2

    如何创建一个守护程序来检查程序是否正在运行(定期运行),如果没有运行则启动它?

  3. 3

    AWS ECS。如何确保仅一个任务实例正在运行?

  4. 4

    如何查看Beaglebone上另一个root实例正在运行的进程

  5. 5

    如果同一个实例已经在运行,如何关闭javax应用程序?

  6. 6

    如何使用一个驱动程序实例运行c#多个硒单元测试?

  7. 7

    如果我同时通过 snap 和 APT 安装了一个应用程序,我如何知道当前正在运行的是哪个应用程序?

  8. 8

    从一个应用程序终止另一个正在运行的应用程序

  9. 9

    如何运行一个程序并在运行程序时定期检查输出是否存在

  10. 10

    如果另一个 APT 实例正在运行,如何让包管理器等待?

  11. 11

    我如何检测正在运行的特定应用程序

  12. 12

    如何找到进程中正在运行的特定程序?

  13. 13

    编写一个简单的批处理文件,检查程序是否正在运行

  14. 14

    最大化另一个正在运行的程序的窗口

  15. 15

    可以从终端取一个正在运行的应用程序吗?

  16. 16

    我正在运行一个程序,并遇到此错误。这是什么意思?

  17. 17

    可以从终端取一个正在运行的应用程序吗?

  18. 18

    从终端切换到另一个正在运行的应用程序

  19. 19

    最大化另一个正在运行的程序的窗口

  20. 20

    我如何有一个实时计时器,每秒更新一次,以查看我的程序正在运行多少?蟒蛇

  21. 21

    如何限制在MFC中一次仅运行一个应用程序实例

  22. 22

    如何测试执行了另一个可运行程序的可运行程序

  23. 23

    检查程序的另一个实例是否已在运行

  24. 24

    如何踢出正在运行的程序?

  25. 25

    apt如何升级正在运行的程序?

  26. 26

    如何在一个EC2实例上运行多个应用程序?

  27. 27

    如何制作一个“模块化”的Java程序,该程序在运行时会更新?

  28. 28

    QBasic:如何从另一个程序中运行一个程序?

  29. 29

    QBasic:如何从另一个程序中运行一个程序?

热门标签

归档