Haskell 在shell命令中分叉海龟不是流式标准输出

Haskell 在shell命令中分叉海龟不是流式标准输出,haskell,haskell-turtle,Haskell,Haskell Turtle,我正在使用以下函数在我的Turtle脚本中分叉命令: forkCommand shellCommand = do pid <- inshell (shellCommand <> "& echo $!") empty return $ PID (lineToText pid) 你不会看到打印发生。我不确定PID正在做什么,但是如果你定义saytestcmd=view$inshell(cmd“&echo$!”)为空,然后运行saytest“cd”。和test“ls

我正在使用以下函数在我的Turtle脚本中分叉命令:

forkCommand shellCommand = do
  pid <- inshell (shellCommand <> "& echo $!") empty
  return $ PID (lineToText pid)

你不会看到打印发生。

我不确定PID正在做什么,但是如果你定义say
testcmd=view$inshell(cmd“&echo$!”)为空,然后运行say
test“cd”。
test“ls”
和python,你会看到进程id是可能流化的许多行中的第一行。我想您将很难从
Shell
中恢复第一行。谢谢您的回复@Michael!PID只是一个围绕文本的新型包装器。我最终使用了
系统。进程
特别是
命令
,然后这个答案告诉了我如何获得PID。例如,你可以用say
在IO中折叠一些shell控件。Foldl.list
来制作一个输出列表,然后检查该列表,但当然,当你获得该列表时,该进程将结束。顺便说一句,您的程序与
fmap(PID.lineToText)$inshell(shellCommand“&echo$!”)一样为空
——它使每一条流化的行变成
PID txt
的形式,啊,折叠的想法还不错!我真正的命令应该是一个长时间运行的服务器,而不是一个helloworld程序:D我将首先看看我当前的解决方案能走多远。谢谢你的帮助和指点!
"python -c \"print('Hello, World')\""