C++基础知识小记
最近在幫華為接口人研究自動(dòng)化部署項(xiàng)目AutoDeploy,把代碼發(fā)給我了,不過(guò)都是用C++寫(xiě)的,自己雖然在大學(xué)也學(xué)了一學(xué)期的C++不過(guò)也是很菜鳥(niǎo),只是學(xué)了基本語(yǔ)法,還遠(yuǎn)未達(dá)到實(shí)戰(zhàn)項(xiàng)目,不管怎么說(shuō)就是擼起袖子就是干,問(wèn)了下中軟其他項(xiàng)目組搞自動(dòng)化的同事他們組用的是python來(lái)做自動(dòng)化部署,自己也上網(wǎng)也搜了下一些開(kāi)源的框架,以及自動(dòng)化部署工作流程,也大致了解了下現(xiàn)在項(xiàng)目的工作流程。現(xiàn)在的項(xiàng)目大致的流程是部署一個(gè)ftp服務(wù)器用來(lái)放置要部署的文件,然后客戶端通過(guò)ssh登錄到ftp服務(wù)器,將文件下載到客戶端,然后執(zhí)行cmd命令部署應(yīng)用。主要涉及了3大知識(shí)點(diǎn):1.C++實(shí)現(xiàn)ftp登錄 2.C++從ftp服務(wù)器下載文件或文件夾 3.執(zhí)行cmd命令實(shí)現(xiàn)部署。
這兩天大致的把流程、代碼瀏覽了一下,在看代碼的過(guò)程中發(fā)現(xiàn)大學(xué)學(xué)的算是皮毛吧。與實(shí)戰(zhàn)的還是有不一樣的地方。也可能是自己沒(méi)學(xué)那么精通。
一、C++中main和_tmain
剛看項(xiàng)目的時(shí)候不知道從哪看,想著那就從main函數(shù)開(kāi)始吧,可main函數(shù)就是沒(méi)找到,不過(guò)找到了一個(gè)有點(diǎn)類(lèi)似的_tmain函數(shù)。自己百度了下才發(fā)現(xiàn)_tmain()與main()是一樣的,_tmain()是為了支持unicode所使用的main一個(gè)別名,既然是別名,應(yīng)該有宏定義過(guò)的,在頭文件<tchar.h>中可以找到_tmain的宏定#define _tmain????? main,所以,經(jīng)過(guò)預(yù)編譯以后, _tmain就變成main了。
二、在_tmain()函數(shù)中的argc和argv[]
當(dāng)我調(diào)試程序的時(shí)候一直納悶遠(yuǎn)程ftp服務(wù)的ip地址、用戶名、密碼、文件路徑是怎么加載的,我開(kāi)始以為是在數(shù)據(jù)庫(kù)中,還使用vs打開(kāi)了sdf類(lèi)型的數(shù)據(jù)庫(kù),把數(shù)據(jù)庫(kù)中的幾個(gè)表的數(shù)據(jù)找了個(gè)遍然并卵,沒(méi)有與這些數(shù)據(jù)沾邊的數(shù)據(jù),當(dāng)我右擊項(xiàng)目—>屬性亂點(diǎn)時(shí)找到了相對(duì)應(yīng)的數(shù)據(jù),原來(lái)在屬性—>配置屬性—>調(diào)試—>命令參數(shù)中。自己又上網(wǎng)找了下,原來(lái)argc:argument count,表示傳入main函數(shù)的參數(shù)個(gè)數(shù),argv 是 argument vector,表示傳入main函數(shù)的參數(shù)序列或指針,并且第一個(gè)參數(shù)argv[0]一定是程序的名稱(chēng),并且包含了程序所在的完整路徑,所以確切的說(shuō)需要我們輸入的main函數(shù)的參數(shù)個(gè)數(shù)應(yīng)該是argc-1個(gè).argv是指向指針的指針,main函數(shù)的第二個(gè)參數(shù)“char *argv[]“也可以替換為 “char **argv“.
而傳參數(shù)給main函數(shù)有兩種方法,第一種方式是在編譯環(huán)境中設(shè)置,右擊項(xiàng)目—>屬性—>配置屬性—>調(diào)試—>命令參數(shù),在命令參數(shù)中輸入,每個(gè)參數(shù)之間用空格隔開(kāi)。第二種方式就是使用cmd命令窗體,類(lèi)似之前在集群redis時(shí)使用cmd命令來(lái)啟動(dòng)一樣傳入?yún)?shù)。
三、遠(yuǎn)程批量部署
今天查了一下開(kāi)源的自動(dòng)化部署,向羅工推薦ansible時(shí),羅工要求部署服務(wù)器不能依賴其他的,但ansible部署時(shí)對(duì)window服務(wù)器是有限制的,具體可以參考http://www.cnblogs.com/kingleft/p/6391652.html。所以還是只能用AutoDeploy。今天看代碼了解了下大致的思路,原來(lái)是通過(guò)wmi遠(yuǎn)程控制服務(wù)器安裝部署應(yīng)用。wmi這個(gè)也是我第一次聽(tīng)到,今天算是漲了姿勢(shì)。使用wmi可以遠(yuǎn)程登錄、文件拷貝、建立進(jìn)程、啟動(dòng)服務(wù).可以參考http://blog.csdn.net/iamherego/article/details/11573553。
參考:http://www.cnblogs.com/XiaoJie85/articles/2128111.html
?
轉(zhuǎn)載于:https://www.cnblogs.com/5ishare/p/6870170.html
總結(jié)
- 上一篇: Spring+SpringMVC+MyB
- 下一篇: 防遗忘笔记,Fedora交叉编译wind