问题标签 [external-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.
java - 如何从 Java 程序启动完全独立的进程?
我正在开发一个用 Java 编写的程序,对于某些操作,它使用用户配置的命令行启动外部程序。目前它使用Runtime.exec()
并且不保留Process
引用(启动的程序是文本编辑器或存档实用程序,因此不需要系统输入/输出/错误流)。
但这有一个小问题,因为当 Java 程序退出时,它并没有真正退出,直到所有启动的程序都退出。
如果启动的程序完全独立于启动它们的 JVM,我会非常喜欢它。
目标操作系统有多种,Windows、Linux 和 Mac 是最少的,但任何带有 JVM 的 GUI 系统都是真正需要的(因此实际命令行的用户可配置性)。
有谁知道如何使启动的程序完全独立于JVM执行?
编辑以回应评论
启动代码如下。代码可能会启动位于特定行和列的编辑器,也可能会启动存档查看器。配置的命令行中引用的值被视为 ECMA-262 编码,并被解码并剥离引号以形成所需的 exec 参数。
发射发生在 EDT。
这似乎仅在从我的 IDE 启动程序时才会发生。我要结束这个问题,因为这个问题只存在于我的开发环境中;这在生产中不是问题。从答案之一中的测试程序,以及我进行的进一步测试,我很满意这不是任何平台上程序的任何用户都会看到的问题。
c# - 以低优先级启动进程。没有try-catch有可能吗?
不久前,我询问了当 app.PriorityClass = 时发生的错误消息。在 app.start 之前。显然我不喜欢的解决方案是在开始后编写它。
直到今天它都没有太大问题。我收到“无法处理请求,因为进程已退出。” 异常,因为该过程完成得足够快,以至于其优先级没有改变(有时)。围绕这个进行尝试感觉很糟糕。真正的解决方案是什么?如何启动低优先级的进程?
c# - C#:重定向控制台应用程序输出:如何刷新输出?
我正在生成外部控制台应用程序并使用异步输出重定向。
如this SO post所示
我的问题是,在我收到OutputDataReceived事件通知之前,生成的进程似乎需要产生一定数量的输出。
我想尽快收到OutputDataReceived事件。
我有一个简单的重定向应用程序,这里有一些观察:
1. 当我调用一个简单的 'while(true) print("X");' 控制台应用程序 (C#) 我立即收到输出事件。2. 当我调用 3d 派对应用程序时,我试图从命令行换行,我看到了逐行输出。
3. 当我从我的准系统包装器(见 1)中调用该 3d 派对应用程序时 - 输出以块的形式出现(大约一页大小)。
该应用程序内部会发生什么?
仅供参考:有问题的应用程序是“USBee DX Data Exctarctor (Async bus) v1.0”。
php - PHP calls to external programs all fail with exit code 127
PHP 4.3.9 on Apache 2.0.52, CentOS 4.5. Safe mode is off, I can run programs as the apache user account from the command line, but all programs run from PHP fail with exit code 127.
c# - 创建在外部进程中运行的 WPF“控件”
我有一个 WPF 应用程序,其中包含许多子控件。
其中一个控件托管一个第三方库,该库在后台运行一些本机代码,这些代码会引发访问冲突并使应用程序崩溃。不幸的是,删除库不是一种选择。
我想做的是启动一个新的 Windows 进程,在其中托管第三方库,并以某种方式与之通信。与 Google Chrome 和 IE8 处理浏览器插件的方式非常相似。
问题是第三方库需要绘制到屏幕上,所以我必须以某种方式在我的 WPF 应用程序的主窗口中拥有相当于 HTML iframe 的内容。
我不知道如何开始,到目前为止很难用谷歌搜索。任何意见是极大的赞赏。
c# - 无法从服务执行程序
我有一个 Windows 服务,我想定期执行一个外部程序。我目前正在以通常的方式执行此操作
这似乎不起作用。我正在从我的服务OnStart
处理程序中启动的单独线程执行此操作。这有什么概念问题吗?不能从这样的服务执行外部程序吗?
c# - 强制外部进程在一段时间后被杀死
我有一个从 C# 类库运行的命令行可执行文件。在一些非常罕见的情况下,可执行文件会因为传递给它的命令行数据而挂起。不幸的是,这会导致调用 c# DLL 的应用程序在无限期地等待进程退出时挂起。
如果命令行 exe 没有在 1 秒内完成执行,它永远不会退出。我想做的是在进程启动后生成一个计时器,如果它在几秒钟内没有退出,则强制关闭进程。
这里最好的方法是什么?该解决方案需要对性能的影响最小,因为此命令行过程是高度重复性任务的瓶颈。
编辑:为什么我应该使用 System.Timer 而不是 Threading.Timer 或反之亦然?
请不要建议我应该尝试找出命令行应用程序挂起的原因,或者我应该将命令行功能重构到源代码中。我们正在积极解决这个问题,但应用程序的稳定性需要放在首位。
php - 从 PHP 调用外部 shell 脚本并获取其进程 ID
如何从 PHP 本身调用外部 shell 脚本(或外部 PHP 脚本)并在同一脚本中获取其进程 ID?
python - 如何在后台启动和运行外部脚本?
我尝试了这两种方法:
两种方法都需要等到 test.py 完成阻塞主进程。我知道“nohup”可以完成这项工作。是否有 Python 方法可以启动 test.py 或任何其他 shell 脚本并让它在后台运行?
假设 test.py 是这样的:
os.system() 或 subprocess.Popen() 都会阻塞主程序,直到显示 1000000 行输出。我想要的是让 test.py 静默运行并仅显示主程序输出。当 test.py 仍在运行时,主程序可能会停止。