如何使用C ++执行shell命令并与linux上的输出交互?

时间:2016-01-02 21:13:29

标签: c++ linux shell terminal

我使用Eclipse并尝试执行用cpp文件编写的shell commands

据我所知,我可以使用system()函数在cpp中执行shell command,但如何在终端中响应提示?

我知道在某个命令之后shell会要求输入密码,我必须把它放在那里。起初我尝试将我的密码放入第二个system()函数,但它没有用。虽然我在两个sleep函数调用之间进行了system()调用,但它不起作用:

system(DO)// after this command the shell asks for a password
sleep(10)
system(Password)`

如何输入密码?

1 个答案:

答案 0 :(得分:0)

您可以在第一个system指令中传递密码。如果您的命令类似getPassword,那么它将是:

system("echo yourPassword | getPassword");

虽然在程序中包含普通密码是危险的。

<强>更新

对于SSH,它不起作用,但对于从apt-get等控制台获取参数的常用命令,它将起作用。使用sshpass将其恢复为正常从stdin获取密码参数。 另一个替代方案是Tcl中的expect,它可以自动和有条件地为SSH输入密码。

同样,建议不要使用纯文本作为密码。请考虑使用公钥身份验证。