我想用Haskell實現一個簡單的編輯器。Haskell代碼與xterm子進程交互
我的基本想法是打開一個xterm實例,然後發送它編輯器應該顯示的內容(文本+例如着色,光標位置等)。內容可以簡單地在每個關鍵筆畫上重寫。
我設法在一個子進程中打開xterm並讓它顯示一個文件的內容(見下面的代碼);然而,寫入其標準輸入似乎不起作用(我沒有得到任何錯誤,但文本也沒有在xterm窗口中顯示)。然後,我嘗試運行簡單的shell命令,如ls
或cat
- 通過這些流,通過流進行交互確實可行。
問題:我的Haskell進程如何與創建的xterm實例交互?
import System.IO
import System.Process
main = do
(Just hin, Just hout, Just herr, jHandle) <-
createProcess (proc "xterm" ["-e", "tail", "-f", "foo.txt"])
{ cwd = Just "."
, std_in = CreatePipe
, std_out = CreatePipe
, std_err = CreatePipe
}
hPutStrLn hin "This should be printed to xterm"
waitForProcess jHandle