我使用Elixir上的openssl命令行生成一个RSA密钥对,一切正常,除了我还没有能够抑制该命令的输出。
这就是我正在运行的:
{_, 0} = System.cmd "openssl", [ "genrsa", "-out", "privateKey.pem", "2048"]
我一直在接受:
Generating RSA private key, 2048 bit long modulus .....+++
.....................................+++ e is 65537 (0x10001)
用escript编译后运行可执行文件。
答案 0 :(得分:8)
System.cmd
从命令收集标准输出并返回它,但这里发生的是OpenSSL写入标准错误,默认情况下不会被捕获,因此只会打印到终端。
您可以使用stderr_to_stdout
选项:
iex(2)> {_, 0} = System.cmd "openssl", [ "genrsa", "-out", "key.pem", "2048"],
[stderr_to_stdout: true]
{"Generating RSA private key, 2048 bit long modulus\n.......................+++\n......................................+++\ne is 65537 (0x10001)\n",
0}
这意味着输出将在第一个元组元素中返回,而不是打印到终端。由于您忽略了返回值的那一部分,因此在运行程序时不会输出它。