您好,登錄后才能下訂單哦!
單實(shí)例程序即程序只有一個(gè)執(zhí)行程序,ruby編寫(xiě)的腳本程序怎么做到這個(gè)功能呢?
我是這樣來(lái)解決這樣這個(gè)問(wèn)題的,每次腳本跑起來(lái)后是通過(guò)系統(tǒng)查詢進(jìn)程是否有多個(gè)相同的運(yùn)行的實(shí)例,如果有則殺掉除第一個(gè)啟動(dòng)的所有進(jìn)程。具體代碼如下:
#保留最早啟動(dòng)的一個(gè)交換服務(wù)
def self.keep_first_switcher_srv()
#查找系統(tǒng),找到所有的交換服務(wù)
info = IO.popen(%q{wmic process where "CommandLine like '%switcher_master%' and Caption like '%ruby%'" get CreationDate,Handle})
data_info = []
info.readlines.each do|line|
if(line =~ /\d/)
data_info << line.strip.split
end
end
#如果找到多個(gè)交換服務(wù),則殺掉所有后啟動(dòng)的交換服務(wù),保留最先啟動(dòng)的交換服務(wù)
if(data_info.size > 1)
min = data_info.map{|item| item[0]}.min
data_info.each do|line|
if(!line.include?(min))
`taskkill /f /pid #{line[1]} /t`
end
end
end
end
核心代碼:
wmic process where "CommandLine like '%switcher_master%' and Caption like '%ruby%'" get CreationDate,Handle
運(yùn)行這條命令來(lái)查詢:程序的啟動(dòng)命令含有ruby和swithcer_master的命令的進(jìn)程,返回進(jìn)程的創(chuàng)建時(shí)間和進(jìn)程id句柄號(hào)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。