執行指令碼的C程式

2021-08-08 08:31:45 字數 1153 閱讀 8918

這裡我使用createprocess來執行指令碼,使用管道將指令碼輸出重定向到檔案中,執行指令碼基本上都可以執行,要判斷執行結果,就需要對從管道返回的執行結果進行分析,判斷此次是否執行成功。

我比較習慣使用c的檔案操作,另使用乙個程式對指令碼進行管理,對建立的虛擬機器名稱和ip進行分配,並將結果寫進redis和配置檔案及log檔案。

部分操作不是執行緒安全的,我在使用的過程中對執行指令碼這部分一直是單執行緒操作的,而且一些檔案在操作後並不會關閉檔案指標,使用fflush來進行重新整理來節省效率。

#include #include #include bool powershellservice::judgefilei***ist(std::string &path) //判斷指令碼檔案是否存在

return true;

}std::wstring s2ws(cosnt std::string &s)

bool executedoscommond(std::string &cmd)

startupinfo si;

process_information pi;

si.cb = sizeof(startupinfo);

getstartupinfo(&si);

si.hstderror = hwrite;

si.hstdoutput = hwrite;

si.wshowwindow = sw_hide;

si.dwflags = startf_useshowwindow | startf_usestdhandles;

if(!createprocess(null, commander, null, null, true, null, null, null, &si, &pi)) //執行指令碼

closehandle(hwrite);

char buffer[4096];

dword bytesread;

addlogtorecorddetail(cmd);

while(true)

else

}closehandle(hread);

return true;

}bool excutepowershellscript(const char *path)

自動執行指令碼

乙個偶然的機會,發現了自動執行指令碼的東東,真是神奇啊,可以執行sql 控制台命令等。由於研究的時間有限,所以知之甚少 先和大家分享下,哈 dim consoleprocess as new system.diagnostics.process consoleprocess.startinfo.fi...

C MFC ShellExecute執行指令碼

目前知道三種方式 winexec,shellexecute createprocess。1.阻塞式呼叫,呼叫時程序阻塞 void cmfccodedlg callshellscript cstring path,cstring fbat,cstring param shexecinfo.cbsize...

Mac執行指令碼

由於iphone的成功,用mac os的朋友也越來越多,建立批處理指令碼檔案還是非常重要的。由於在mac下面建立指令碼檔案和windows下面大不一樣,於是寫篇博文紀錄一下。plain view plain copy 1.bin bash 2.echo abc plain view plain co...