关于进程的一些特殊操作

如何才能做到启动一个程序在后台,然后后面通过指令将它调到前台

如有一个程序a

a run --bg b.exe --name b

让b.exe在后台运行然后

a fg b

将b调回前台

(最好能跨平台,或者在不同平台下的实现也可以)

如果做不到的话能不能直接给这个后台程序传一个字符串,让这个后台执行字符串(就是那种可以输入命令的程序比如ftp之类的)

http://c.biancheng.net/view/1078.html

该回答引用GPTᴼᴾᴱᴺᴬᴵ
这个问题涉及到操作系统层面的进程管理和控制,不同的操作系统可能有不同的实现方式。以下是一些常见操作系统的实现方式:

在 Linux 和 macOS 等 Unix-like 系统中,可以使用以下命令启动一个后台进程:

nohup command > /dev/null 2>&1 &

这个命令会将 command 进程启动在后台,并将输出重定向到 /dev/null,同时将标准输出和标准错误重定向到同一个文件,并将进程放到后台运行。然后可以使用 fg 命令将进程调回前台。

在 Windows 操作系统中,可以使用以下命令启动一个后台进程:

start /B command

这个命令会将 command 进程启动在后台,并不会打开一个新的窗口。如果要将进程调回前台,可以使用以下命令:

tasklist /FI "IMAGENAME eq command.exe"
taskkill /PID <PID>

第一个命令会列出所有进程中名称为 command.exe 的进程,并显示它们的进程 ID(PID)。第二个命令可以根据 PID 来结束指定的进程,并将它调回前台。

对于跨平台的需求,可以考虑使用一些跨平台的进程管理库,如 Node.js 的 child_process 模块,或者 Python 的 subprocess 模块,它们可以在不同的操作系统下执行进程操作。这些库提供了一些 API 来启动、停止、管理进程,并可以控制输入输出流来实现进程间通信。可以根据实际需求选择合适的库来完成这个任务。

对于直接给后台程序传字符串的需求,可以考虑使用一些交互式命令行工具,如 Expect,它可以模拟用户在命令行中输入命令,并捕获命令的输出。这种方式需要后台程序支持交互式命令行,否则可能无法实现。