Haskell 如何使系统进程像在终端中一样运行
我使用以下代码以编程方式解密文本文件: liftIO$readCreateProcess proc gpg[-decrypt]someText 我得到了以下错误:Haskell 如何使系统进程像在终端中一样运行,haskell,Haskell,我使用以下代码以编程方式解密文本文件: liftIO$readCreateProcess proc gpg[-decrypt]someText 我得到了以下错误: gpg: no valid OpenPGP data found. gpg: decrypt_message failed: eof 我意识到我应该提供密码短语。 如果在终端中运行decrypt命令,将出现一个弹出窗口,显示请求密码短语。如何在Haskell代码中获得相同的行为?在输入开始之前,您可以通过stdin传递密码短语,如下
gpg: no valid OpenPGP data found.
gpg: decrypt_message failed: eof
我意识到我应该提供密码短语。
如果在终端中运行decrypt命令,将出现一个弹出窗口,显示请求密码短语。如何在Haskell代码中获得相同的行为?在输入开始之前,您可以通过stdin传递密码短语,如下所示:
import System.Process
someText = "-----BEGIN PGP MESSAGE-----\nVersion: GnuPG v1\n\njA0EBwMClxuDgJaLIYBg0j8BYFDqf5BGLs4kfNT6QDDts5eu0UxetzJKDoLFYFuq\nvcIRHmZpZRMSjHQAUst2tnplvCnm0xVoSoSTrXyw9p4=\n=GDh5\n-----END PGP MESSAGE-----\n"
main = do
decryptedText <- readCreateProcess (proc "gpg" ["--passphrase-fd","0","--decrypt"]) ("hunter2\n" ++ someText)
putStrLn decryptedText
您可以在输入开始前的行上通过stdin传递密码短语,如下所示:
import System.Process
someText = "-----BEGIN PGP MESSAGE-----\nVersion: GnuPG v1\n\njA0EBwMClxuDgJaLIYBg0j8BYFDqf5BGLs4kfNT6QDDts5eu0UxetzJKDoLFYFuq\nvcIRHmZpZRMSjHQAUst2tnplvCnm0xVoSoSTrXyw9p4=\n=GDh5\n-----END PGP MESSAGE-----\n"
main = do
decryptedText <- readCreateProcess (proc "gpg" ["--passphrase-fd","0","--decrypt"]) ("hunter2\n" ++ someText)
putStrLn decryptedText