2

我正在一个网站上工作,我们希望用户能够在服务器上创建新进程并与服务器交互。例如,用户想要运行 C 代码:

#include<sdio.h>

int main()
{
    int a;
    scanf("%d", &a);
    printf("%d", a);
}

在服务器中,我们创建一个进程并使其保持活动状态,直到该进程停止运行。当使用类似的函数时exec,我们不能做事scanf。使用时proc_open,我们无法让子进程保持活动状态..或者我们可以但我们不知道如何..

过程可以是:用户发送指令->服务器创建一个新进程来执行指令->执行指令时,服务器发送stdout到网页并stdin从用户输入中获取->进程停止运行..

4

1 回答 1

0

我有一个定制的芯片和引脚解决方案,它在 exec 调用中使用“&”启动了后台 PHP CLI 脚本。然后,前端和后台脚本通过简单地通过 2 个 ascii 文件传递​​字符串进行通信。这是粗略但有效的。显然,两个进程都必须检查/读取其传入文件,决定做什么(例如在后台进程上执行您的 C++ 代码),然后在必要时通过写入其输出文件来响应。将这三个步骤放入一个循环中,您就有了一个粗略的侦听器/守护程序。由于后台作业必须同时侦听作为授权服务通信通道的套接字,这使情况变得更加复杂。这是一个单用户场景,但可以通过使用唯一文件或写入键控数据库表来适应多用户。

电话看起来像这样:

exec ("php mydaemon.php 2>&1>/dev/null &");

我假设一个 Linux 服务器 - 因此 linux "&" 指令在后台运行。2>&1>/dev/null 只是抑制标准输出和标准错误。

不太确定如何在 Windows 中解决它 - 但必须有 Wscript 或 VBscript 等价物?

于 2013-06-28T22:35:19.730 回答