问题标签 [child-process]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
10730 浏览

javascript - javascript停止无限循环

这是 node.js。

如果满足多个条件,我有一个函数可能会变成无限循环。不受信任的用户设置了这些条件,因此出于此问题的目的,请假设无限循环是无法修复的。

我仍然需要一种方法来停止无限循环。

这是我正在尝试做的一些示例代码:

所以有几个问题基于我正在尝试做的事情。

  1. 如果infiniteloop变量设置为true,循环将停止对吗?
  2. 如何检测无限循环?每 3 秒检查一次会很好。
  3. 如果infiniteloop变量在同一进程上,则在循环时无法更改变量。我必须将变量存储在不同的进程中吗?
  4. 无论检测到无限循环是否需要存在于不同的进程中?理想情况下,相同的过程会很好,但有什么用?

谢谢你的帮助。

0 投票
1 回答
2188 浏览

node.js - Node.js 生成 vlc 子进程在 express 中不起作用

我正在使用 node.js 和 express 为我的家庭媒体中心创建一个可以通过浏览器操作的控制器。

我在生成 VLC 进程时遇到了很多麻烦,但奇怪的是,它只有在从节点提示符执行时才有效,而不是在从文件运行时。

这是我测试过的:

在节点命令行/解释器中:require('child_process').spawn('vlc'); 这正如我所料,我可以看到 vlc 窗口打开并在屏幕上持续存在。

如果我采用完全相同的代码行并将其放在另一个文件中(例如 test.js)并从命令行运行它,则没有任何反应node test.js。几秒钟后注销子进程对象会给我这个:

对此特别奇怪的是,我可以以相同的方式启动其他程序并且它可以工作。例如,用“gedit”替换“vlc”会导致文本编辑器完全按预期显示。

有人知道这可能是什么吗?

0 投票
1 回答
1263 浏览

python - 从 python 子进程获取数据到 Node.js

我有一些Python代码,我正在从Node.js. 我能够执行代码,但是我坚持将数据从 Python 流式传输到node.js

帮助我确定如何将数据流式传输到node.js.

PS 我对 Python 和 Node.js 都很陌生

0 投票
1 回答
5460 浏览

node.js - 如果脚本被杀死,node.js 生成的进程仍然存在

是否可以确保当父进程被杀死时,使用 node.js child_process 生成的进程将被杀死?

这是一个示例脚本

如果我查看进程树,我会看到:

然后稍后我需要停止该脚本并且不能 ctrl-c (说我的 ssh 连接丢失了)

您可以看到尾部进程仍在运行,并且已与任何父进程分离。

如果生成器被杀死,是否有编程方法来杀死生成的进程?

有没有可以传递给 spawn 的选项,或者我应该使用不同的方法还是需要捕获 kill 信号(这对 kill -9 有效)?

0 投票
1 回答
346 浏览

ruby - EventMachine DeferrableChildProcess 错误处理

我在EventMachine::DeferrableChildProcess.open实际进行任何类型的错误处理时遇到问题。希望我做错了。这是一个例子:

我希望这段代码的结果(假设您的系统上实际上没有/trolol目录)是:“失败:<SomeErrorObject>”。相反,我得到“收到一些数据:''”。ls雪上加霜的是,由("ls: cannot access /trololo: No such file or directory")引起的错误消息以某种方式打印到 stderr。

我做错了什么,还是基本上没有错误处理EM::DeferrableChildProcess.open?我得到了类似的结果EM.popen

0 投票
0 回答
923 浏览

node.js - 尝试在 nodejs 子进程中执行 svn ls 命令返回错误

我想svn ls <path>在尝试时运行命令,但出现错误说明

这是您尝试在没有路径且不受 SVN 版本控制的目录中运行命令时遇到的标准错误。但问题是,当我在执行命令之前 console.log 时,它特别说明了远程 SVN 存储库的完整、有效路径。

例如,svn ls https://svn.example.com/this/is/a/valid/repo

如果我将日志复制并粘贴到我自己的 bash 中,它会很好地列出目录。

这是我想要执行的代码

或者,我尝试了更详细的生成 bash 实例的方法:

它向控制台输出相同的错误以及退出代码(1)。

有谁知道为什么会失败?

0 投票
1 回答
2532 浏览

node.js - 从 node.js 生成 ssh 命令时如何传递密钥文件?

这适用于我的本地终端:

当然可以。但是,当我使用 node.js 的命令尝试相同的操作时,child_process.spawn它会抱怨密钥不存在/无法访问。

结果:

尝试的事情:

  1. 密钥路径的变化:(
    /actual/path/to/mykey.pem
    mykey.pem在节点项目的根目录中包含
    /mykey.pem文件的副本)(在节点项目的根目录中包含文件的副本)
    ~/.ec2.mykey.pem(应该在哪里)

  2. 运行没有 ssh 部分的命令,即。childProcess(ls);- 作品。

  3. chmod 644, 600, 400 etc. mykey.pem

在这一点上,我唯一的理论是传递文件引用存在问题,我需要使用 fs 模块做一些事情。(?)是的,我知道有一些库可以通过 node 进行 ssh 访问,但它们使用的密码不会削减它,而且无论如何,我的要求并不能真正证明一个库的合理性。

请告诉我我很愚蠢,这是可能的。

更新:

好的,所以我可以像这样使用 exec 命令:

尽管如此,我觉得我已经从使用fork所有漂亮的消息传递和方便的属性(我最初的实现在本地运行良好)创建一个真正的奴隶降级到拥有一个真空吸尘器并被告知自己完成所有工作(现在我想在远程主机上启动奴隶)。

0 投票
4 回答
4167 浏览

bash - 当特定子进程终止时,如何在 bash 脚本中接收通知?

我想知道是否有人可以帮助解决这个问题?

我有一个 bash 脚本。它启动一个子进程,这是另一个基于 gui 的应用程序。然后 bash 脚本进入交互模式,从用户那里获取输入。这种交互模式无限期地继续下去。我希望它在子进程中的 gui 应用程序退出时终止。

我看过 SIGCHLD 但这似乎不是答案。这是我尝试过的,但是当 prog 结束时我没有收到信号。

更新了以下答案。我现在使用“nosid”的建议进行这项工作。我现在有另一个相关的问题,即接下来的交互过程是一个基本的菜单驱动过程,它阻止等待用户的键输入。如果子进程结束 USR1 信号直到收到输入后才被处理。有没有办法强制立即处理信号?

等待看起来像这样:

更新了解决方案。我已经解决了这个问题。诀窍是使用非阻塞 I/O 进行读取。现在,有了“nosid”的答案和我的修改,我得到了我想要的。为了完整起见,这对我有用:

0 投票
1 回答
1306 浏览

node.js - heroku 上的 exec 和 PATH 与 buildpacks

我使用这个 buildpack是为了在 heroku 上使用casperjs

一旦我的应用程序创建,我检查我的PATH

好的,casperjs 在这里!

--

档案

刮刀.js

--

但是当我启动爬虫进程时,它会崩溃并显示以下日志:


为什么exec找不到casperjs哪个在里面PATH

PS:我试过了,spawn但没有更多的运气......

[编辑]:这里有一个可测试的要点https://gist.github.com/3856317

0 投票
3 回答
152 浏览

c# - 抛出什么异常来指示子进程被冻结

问题 1 - 实用

我在我的 C# 应用程序中使用System.Diagnostics.Process. 如下所示:

我目前正在投掷System.ComponentModel.Win32Exception. 但我不确定这是否是最佳选择。子进程是一个简单的命令行实用程序。那么第一个问题,在这种情况下要抛出什么异常?

问题 2 - 理论上的

这不是我第一次问自己要抛出什么异常。而且我不知道如何选择某个人的简单指南。C# 中有很多例外,从一个命名空间深深地继承到另一个命名空间。第二个问题,如何决定在特定情况下抛出什么异常?