【问题标题】:Send a variable to a processes using PID in command line?在命令行中使用 PID 将变量发送到进程?
【发布时间】:2012-07-22 01:24:53
【问题描述】:

我有一个打开的进程,可以检索变量,但它在后台运行。

所以我需要使用 PID 向进程发送一个变量??是否可以在命令行中将变量发送到进程或重新连接到进程。

【问题讨论】:

  • 您可以尝试以service 的身份运行并构建一种与之交互的方式。
  • 是否有任何理由将其标记为 php/shell/command-line/cmd/pid?大多数 shell 命令都特定于您使用的终端。 PHP 在解释器中执行,并且与 shell 无关。您在寻找什么样的答案?

标签: php shell command-line cmd pid


【解决方案1】:

进程间通信通常由套接字处理,即supported in PHP。因此,如果您可以控制这两个应用程序,则可以设置套接字以在它们之间进行通信。

【讨论】:

  • 我之前研究过套接字,但我找不到任何关于如何使用 PID 进行连接和重新连接的信息。有点看不懂,你有没有比普通教程更简单的教程,你可以在google上搜索socket时找到的?
  • 套接字未通过 PID 连接。最常见的是,程序将被配置为侦听 IP/端口(可以是 localhost)。或者,在 POSIX 系统上,您可以将 socketpairsendmsgrecvmsg 结合使用。在 PHP 中,这是通过 socket_create_pair (php.net/manual/en/function.socket-create-pair.php) 实现的
【解决方案2】:

*nix 类型的 shell

您可以通过 fg [job id] 重新连接到进程(这不是 PID,但您可以使用终端中的 jobs 命令找到它)

IPC

如果程序配置为接受变量,您也可以将变量发送到程序中。它可以从管道、文件或网络套接字中读取它

如果程序只是在等待布尔消息,它也能够接收信号(使用kill -[signal] 发送)

对于php来说,通过这些方法发送变量可能会涉及到serialization的变量在传输之前

【讨论】:

  • 我没明白你的意思。 fg[job id] 是否可以连接到进程但不能通过 PID,那么如何??
  • 假设您在终端中,如果您输入jobs,它将为您提供一个输出,列出正在运行的程序(从该会话生成)及其“作业 ID”。如果您输入fg jobid,它会将其带回前台,您可以与它进行交互
  • 当我输入作业时,我没有得到任何回报
  • 你是如何为你的程序设置后台的?
  • 它应该类似于$ ./program& 或使用Ctrl-Z 转义然后bg。当您使用其中任何一种进行后台处理时,它还会告诉您作业 ID
猜你喜欢
  • 1970-01-01
  • 2012-03-20
  • 2017-10-21
  • 1970-01-01
  • 2011-02-22
  • 2014-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多