C “怎么做?”;mysql“;询问密码?

C “怎么做?”;mysql“;询问密码?,c,unix,terminal,stdin,C,Unix,Terminal,Stdin,如果我像mysql一样运行命令行程序 mysql -u someone -p < sql-file 但是,从上面可以看到,标准输入实际上是一个文件,sql文件 “mysql”(或类似程序)是如何做到这一点的 (请注意,这不是一个关于MySQL的问题,我感兴趣的是C程序如何像这样访问终端。)以读取模式打开/dev/tty作为文件,然后从中读取。密码通常直接从终端读取。事实上,有一个函数就是这样做的。当你在文件中插入管道时,它会出现在stdin上。读取密码的应用程序通常会打开一个单独的输入

如果我像mysql一样运行命令行程序

 mysql -u someone -p < sql-file
但是,从上面可以看到,标准输入实际上是一个文件,
sql文件

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


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

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

密码通常直接从终端读取。事实上,有一个函数就是这样做的。

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

实现目标的最好方法是使用


另请参阅:值得补充的是,即使标准输入被重定向,进程仍然有一个控制终端(如果它是从shell运行的,如所述)<代码>/dev/tty指此控制终端。
 Enter password:
#!/usr/bin/expect -f
spawn mysql
expect "*password*"
send "your_password_here"