Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 如何使系统进程像在终端中一样运行_Haskell - Fatal编程技术网

Haskell 如何使系统进程像在终端中一样运行

Haskell 如何使系统进程像在终端中一样运行,haskell,Haskell,我使用以下代码以编程方式解密文本文件: liftIO$readCreateProcess proc gpg[-decrypt]someText 我得到了以下错误: gpg: no valid OpenPGP data found. gpg: decrypt_message failed: eof 我意识到我应该提供密码短语。 如果在终端中运行decrypt命令,将出现一个弹出窗口,显示请求密码短语。如何在Haskell代码中获得相同的行为?在输入开始之前,您可以通过stdin传递密码短语,如下

我使用以下代码以编程方式解密文本文件:

liftIO$readCreateProcess proc gpg[-decrypt]someText

我得到了以下错误:

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