命令列在程式執行中的使用

2021-09-01 06:34:00 字數 1376 閱讀 4514

我們做開發的時候,比如需要呼叫api實現的一些功能,比如殺掉某個程序,獲取當前程序列表(判斷當前有無某個程序),或者註冊服務,或者查詢當前某個埠是否有被占用的時候。大部分都是通過獲取api進行解決,查介面文件比如msdn,或者系統相關的介面看是否有可以實現功能的函式。但是我在這裡講解一下另外一種方法,希望對大家有用。

介紹這個之前先說乙個在windows和linux上都有的東西,命令列管道。比如說:我想獲取當前程序列表中是否有乙個叫做chrome的程序。用windows命令列可以這麼寫:tasklist /fo csv | findstr "chrome.exe",linux應該是ps aux | less | grep "chrome",執行結果如下圖:

windows上情況(加入csv格式化會讓之後的處理方便一些,比如獲取第一行之後直接split(",")[1]就可以拿到程序pid):

linux上情況(ubuntu自帶firefox這裡就用firefox了):

這樣就可以根據輸出判定某個程序存在,對於不存在的情況也很明顯比如:

這樣就會沒有輸出,大致原理就是這樣。

就算是對於同名程序,也有命令列引數不一樣可以區分當前程序具體是幹嘛的,比如wmic命令列,

轉一篇文章:這裡很好的對wmic命令列有介紹。(不知道為啥wmic對於管道的處理不支援,比如wmic process list | findstr "chrome"會得到一堆亂碼)。

wmic介紹部落格:

常見windows命令(windows上所有命令都可以/?,linux可以–help檢視幫助文件,選擇合適的引數指定功能):

netstat(埠相關,比如查詢某個埠被占用很實用)

tasklist(程序列表相關)

taskkill(殺程序)

wmic(參見部落格內容)

net(建立服務,使用者管理配置等等,非常強大)

explorer(資源管理器,可供指定開啟某乙個目錄)

rundll32.exe(可以通過指定開啟檔案方式開啟檔案)

…對於不需要獲取返回值的情況,可以簡單shellexecute(或者exec)+引數解決.

對於需要獲取返回值並對返回值進行處理的時候,可以用管道執行程式(popen)

popen資料參考:

讀取返回值進行分析.

windows上也有專有的api可以實現讀取命令列返回值的功能createpipe&readfile這樣配合就能讀取管道的輸出.當然用popen也沒有啥問題,只是字符集的問題在cmd下會出現亂碼這個問題不太好解決.

命令列 Pytest之命令列執行

基於一套 實現流水線的驗證方案,針對每個流水線傳不同的使用者進行驗證,具體的使用者可以選擇每個集群裡面活躍度比較高使用者來進行測試。正如前面說的,在saas化的模式下,底層服務它是共享的機制,但是每個集群它是不同的,這種不同在於它提供的db層面和計算能力,因此需要被驗證。使用pyhton中的argp...

postman命令列中執行,newman

postman在命令列中執行 執行準備 匯出collecton 安裝nodejs和npm 國內網不好訪問nodejs,則使用cnpm安裝newman 安裝newman 執行及生成測試報告 1 cli reporter 2 json report 3 html reporter 4 junit rep...

在Windows命令列中編譯執行C C 程式

此處執行環境是在windos下,執行cmd命令進入dos介面 現在有一段簡單c 檔名為 demo.cpp 用於計算a b的值 includeusing namespace std int main int a,b while cin a b cout 第一步 在dos介面進入這個目錄 第二步 用g ...