Mysql入门系列:MYSQL客户机程序4—在运行时获取连接参数
2006-12-31 10:51:28 来源:WEB开发网6.5.2 分析命令行参数
现在我们可以把所有的连接参数都放入参数向量,但需要一个分析该向量的方法。getopt_long() 函数就是为此目的设计的。getopt_long() 设在MySQL客户机库的内部,因此,无论什么时候与库连接都可以访问它。源文件中要包含getopt.h 头文件,可以把这个头文件从MySQL源分发包的include 目录拷贝到正在开发的客户机程序所在的目录中。
load_defaults() 与安全
因为有些程序(如p s)可以显示任何过程的参数列表, load_defaults() 将口令的文本放在参数列表中,所以您可能对它处理窥探的含意表示惊异。这没有问题,因为ps 显示原始的a rgv[] 内容,由load_defaults() 创建的任何口令参数都指向为它自己分配的区域,这个区域并不是原始区域的一部分,所以ps 看不见它。另一方面,除非故意清除,否则在命令行指定的口令会在ps 中出现。6 . 5 . 2节“分析命令行参数”介绍了如何去做。下面的程序show_param 使用load_defaults() 读取选项文件,然后调用getopt_long() 来分
析参数向量。show_param 举例说明了通过执行以下操作参数处理的每个阶段发生了什么:
1) 建立主机名称、用户名称和口令的缺省值。
2) 打印原始连接参数和参数向量值。
3) 调用load_defaults() 重新编写参数向量,反映选项文件内容,然后打印结果向量。
4) 调用getopt_long() 处理参数向量,然后打印结果参数值和参数向量中的剩余部分。
show_param 允许使用各种指定的连接参数的方法进行试验(无论是在选项文件中还是在命令行中),并通过显示使用什么值进行连接来查看结果。当实际上我们把参数处理代码与连接函数do_connect() 连到一起时,show_param 对于预知下一个客户机程序将要发生什么是很有用的。
更多精彩
赞助商链接