C++基础知识小记

最近在帮华为接口人研究自动化部署项目AutoDeploy,把代码发给我了,不过都是用C++写的,自己虽然在大学也学了一学期的C++不过也是很菜鸟,只是学了基本语法,还远未达到实战项目,不管怎么说就是撸起袖子就是干,问了下中软其他项目组搞自动化的同事他们组用的是python来做自动化部署,自己也上网也搜了下一些开源的框架,以及自动化部署工作流程,也大致了解了下现在项目的工作流程。现在的项目大致的流程是部署一个ftp服务器用来放置要部署的文件,然后客户端通过ssh登录到ftp服务器,将文件下载到客户端,然后执行cmd命令部署应用。主要涉及了3大知识点:1.C++实现ftp登录 2.C++从ftp服务器下载文件或文件夹 3.执行cmd命令实现部署。

这两天大致的把流程、代码浏览了一下,在看代码的过程中发现大学学的算是皮毛吧。与实战的还是有不一样的地方。也可能是自己没学那么精通。

一、C++中main和_tmain

刚看项目的时候不知道从哪看,想着那就从main函数开始吧,可main函数就是没找到,不过找到了一个有点类似的_tmain函数。自己百度了下才发现_tmain()与main()是一样的,_tmain()是为了支持unicode所使用的main一个别名,既然是别名,应该有宏定义过的,在头文件<tchar.h>中可以找到_tmain的宏定#define _tmain      main,所以,经过预编译以后, _tmain就变成main了。

二、在_tmain()函数中的argc和argv[]

当我调试程序的时候一直纳闷远程ftp服务的ip地址、用户名、密码、文件路径是怎么加载的,我开始以为是在数据库中,还使用vs打开了sdf类型的数据库,把数据库中的几个表的数据找了个遍然并卵,没有与这些数据沾边的数据,当我右击项目—>属性乱点时找到了相对应的数据,原来在属性—>配置属性—>调试—>命令参数中。自己又上网找了下,原来argc:argument count,表示传入main函数的参数个数,argv 是 argument vector,表示传入main函数的参数序列或指针,并且第一个参数argv[0]一定是程序的名称,并且包含了程序所在的完整路径,所以确切的说需要我们输入的main函数的参数个数应该是argc-1个.argv是指向指针的指针,main函数的第二个参数“char *argv[]“也可以替换为 “char **argv“.

而传参数给main函数有两种方法,第一种方式是在编译环境中设置,右击项目—>属性—>配置属性—>调试—>命令参数,在命令参数中输入,每个参数之间用空格隔开。第二种方式就是使用cmd命令窗体,类似之前在集群redis时使用cmd命令来启动一样传入参数。

三、远程批量部署

今天查了一下开源的自动化部署,向罗工推荐ansible时,罗工要求部署服务器不能依赖其他的,但ansible部署时对window服务器是有限制的,具体可以参考http://www.cnblogs.com/kingleft/p/6391652.html。所以还是只能用AutoDeploy。今天看代码了解了下大致的思路,原来是通过wmi远程控制服务器安装部署应用。wmi这个也是我第一次听到,今天算是涨了姿势。使用wmi可以远程登录、文件拷贝、建立进程、启动服务.可以参考http://blog.csdn.net/iamherego/article/details/11573553。

参考:http://www.cnblogs.com/XiaoJie85/articles/2128111.html

上一篇:macbook pro的usb串口失效的的处理方法


下一篇:redis 启动停止脚本