【问题标题】:How to Run one Process Twice with shell script?如何使用 shell 脚本两次运行一个进程?
【发布时间】:2016-10-16 17:57:17
【问题描述】:

如果我有一个可执行文件,使用 shell 脚本运行两次的正确方法是什么?
要执行两次的进程使用共享内存进行消息传递和共享信号量
简单地使用

./a
./a

将运行一个进程,而另一个进程在第一个进程停止之前无法运行,因此两个进程之间不会发生通信
以并行方式运行一个可执行文件两次的正确方法是什么?

【问题讨论】:

  • 把它放在后台,使用&
  • ./a nohup ./a & 对吗?

标签: c++ linux shell shared-memory


【解决方案1】:

作为@SamVarshavchik said,使用&号在后台运行一个进程,让另一个可以并发运行:

./a &
./a

./a & ./a

【讨论】:

  • ./a ./a & 由于第一个进程的执行,第二个进程不会进入后台是否有任何方法可以将第二个进程而不是第一个进程置于后台(如果第一个进程是交互式的并且第二只需要在后台运行)...
【解决方案2】:

如果正如您的 cmets 所暗示的那样,第二个进程需要在后台运行,因为第一个进程是交互式的,您可以这样做:

{ sleep 10; ./second; } &
./first

或者,您可以使用自己的终端启动每个进程:

xterm -e "./first" &
xterm -e "./second" &

【讨论】:

    【解决方案3】:

    首先,最好重写您的应用程序并在启动时将其设为fork(),而不是 bash 黑客。但一般来说,如果你想将第一个进程带到前台,你可以使用fg 命令:

    ./a &
    ./a &
    fg 1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-22
      • 1970-01-01
      • 1970-01-01
      • 2015-05-26
      • 1970-01-01
      • 2020-11-04
      • 1970-01-01
      • 2023-03-16
      相关资源
      最近更新 更多