我正在尝试使用 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/