c - 如何在 C 中运行多个 execlp()?

标签 c openssl exec

我正在尝试使用 execlp() 以线性顺序运行多行 openssl:

execlp("openssl","genrsa","-out","rsaprivatekey.pem","2048",(char*) 0);
printf("RSA private success");
execlp("openssl","rsa","-in","rsaprivatekey.pem","-pubout","-out","rsapublickey.pem",(char*) 0);
printf("RSA public success");
execlp("openssl","dgst","-sha1","-sign","rsaprivatekey.pem","-out","1.cipher","1",(char*) 0);
printf("SHA1 sign success");
execlp("openssl","dgst","-sha1","-verify","rsapublickey.pem","-signature","1.cipher","1",(char*) 0);
printf("SHA1 verify success");

在这种情况下,只有第一行被执行。我尝试将所有内容组合在一个 execlp() 中并使用 && 分隔命令,但仍然没有结果。 有人可以帮我解决这个问题吗?

最佳答案

原因是“execlp()”将您当前的程序替换为您希望“exec()”的程序。

建议: 如果您希望您当前的程序持续存在(至少足够长以调用“openssl”的多个实例,则使用类似“system()”的东西而不是“execlp”。

否则,请考虑使用 shell 脚本或 .bat 文件来调用多个命令,然后改为“execlp”您的脚本(使用适当的“bash”或“cmd.exe”)。

关于c - 如何在 C 中运行多个 execlp()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6785775/

相关文章:

c - 如何为C程序制作插件界面

php - PHP OpenSSL 可以生成私钥/公钥/证书对吗?

C# RSA 公钥输出不正确

c - exec 从终端应用程序杀死终端

c - 如何使用 VC++ 编译器刷新 .C 程序中的标准输入设备?

objective-c 检查 float 和 int 是否相等——2.0000 == 2

ssl - 只有 TLS_RSA_WITH_AES_256_CBC_SHA 密码套件的自签名 SSL 证书

C - exec 不输出到管道

Java - Runtime.getRuntime().exec() 这是怎么回事?

c - 用最大输入填充 C 中的 argv[1]