来自/ dev / pty / N的hGetLine?

时间:2015-05-23 03:07:21

标签: haskell terminal filehandle pty

我试图从伪终端读取。我最终的目标是将输入/输出从伪终端连接到reactive-banana事件,但是现在我只是尝试从Haskell代码中的伪终端并在shell中写入它。我在Main.hs中有以下代码:

import System.Posix.Terminal
import System.Posix.IO

main :: IO ()
main = do
    (master, slave) <- openPseudoTerminal
    getTerminalName slave >>= print
    hSlave <- fdToHandle slave

    hGetContents hSlave >>= print . take 10

当它运行时,我看到类似的东西:

"/dev/pts/7"

所以我希望我能用这样的东西来写它

echo "hellllllllllllllllllllllllllloooo" > /dev/pts/7

在另一个shell中。但是当我运行Main.hs时,在"/dev/pts/N"行之后没有任何内容被打印出来 - 看起来它只是永​​远等待输入。我还尝试使用hGetLinehGetChar代替hGetContents,但没有运气。我在这里缺少什么?

1 个答案:

答案 0 :(得分:2)

您不想从主句柄中读取吗?

...
hMaster <- fdToHandle master
hGetContents hMaster >>= print . take 10
...