“mysql”如何要求输入密码?

时间:2010-11-12 00:22:07

标签: c unix terminal stdin

如果我运行命令行程序mysql,如

 mysql -u someone -p < sql-file

因此需要密码(-p),它会提示输入密码:

 Enter password:

但是,正如您从上面所看到的,标准输入实际上是一个文件sql-file

“mysql”(或类似程序)如何做到这一点?

(请注意,这不是关于MySQL的问题,我对C程序如何像这样访问终端感兴趣。)

3 个答案:

答案 0 :(得分:4)

以读取模式打开/dev/tty作为文件,然后从中读取。

答案 1 :(得分:2)

通常直接从终端读取密码。事实上,有一个函数getpass可以做到这一点。

答案 2 :(得分:0)

当您在文件中管道时,它会出现在stdin上。读取密码的应用程序通常会打开一个单独的输入流。

实现目标的最佳方法是使用Expect

#!/usr/bin/expect -f
spawn mysql
expect "*password*"
send "your_password_here"