我目前正在编写一个 Haskell 程序,该程序执行一些初始化工作,然后调用 ncmpcpp。我想做的是启动 ncmpcpp 并终止 Haskell 程序,这样就只剩下 ncmpcpp (可选地,该程序可以继续在后台运行,只要它不干扰)
但是,即使我能够启动 ncmpcpp,我也无法与其交互。我看到了它的输出,但输入似乎是不可能的。
我目前正在做的是:
import System.Process (createProcess, proc)
...
spawnCurses :: [String] -> IO ()
spawnCurses params = do
_ <- createProcess (proc "ncmpcpp" params)
return ()
我做错了什么/我应该采取什么不同的做法?
最佳答案
您想要实现的目标听起来像exec
函数族确实如此。看看executeFile
功能。
如果您希望父 Haskell 进程在子进程启动后仍然运行,请阅读 fork-exec和 forkProcess
功能。
将forkProcess
与executeFile
一起使用的完整示例可以在 http://therning.org/magnus/archives/727 找到。 .
关于haskell - 使用 Haskell fork 到 shell 脚本并终止原始进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13260512/