haskell - 使用 Haskell fork 到 shell 脚本并终止原始进程

标签 haskell process fork

我目前正在编写一个 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-execforkProcess功能。

forkProcessexecuteFile一起使用的完整示例可以在 http://therning.org/magnus/archives/727 找到。 .

关于haskell - 使用 Haskell fork 到 shell 脚本并终止原始进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13260512/

相关文章:

Haskell 集合保证每个操作的最坏情况界限?

haskell - ScopeTypeVariables 无法帮助推理

linux - 多线程进程的分支 : all process memory gets copied?

c - 当我重定向输出时,fork 和等待过程不适用于 mke2fs

linux - 如何在最小的 linux 安装上 "docker run"一个 shell session 并立即拆除容器?

c++ - 无需信号量即可同步父级和子级

Haskell 的 foldr/l 和 Clojure 的 reduce

Haskell:为什么我不能使用 liftM 线。获取内容

php - 提高 mysql 速度?

java - 如何使用java停止正在运行的批处理文件