Re: [問題] 如何關閉使用system開啟的程式?

看板Perl作者 (jet)時間17年前 (2008/01/19 10:25), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串2/4 (看更多)
※ 引述《mosquito520 ( )》之銘言: : 抱歉,由於我對於perl近乎無知, : 使用perl是因為我想寫個簡單的程式。 : 這個程式需要連接網路送http request, : 考量到寫程式的方便性以及發佈時的考量, : ﹝C socket programming 我只會寫unix底下的, : winsock到現在我還不知道怎麼用, : PHP也很方便,但是發布的時候沒辦法包成執行檔, : 總不可能要每個人去抓PHP來裝。 : VB、VC都不大熟...Orz﹞ : 基於上述考量,所以我選擇用perl來開發。 : 不過目前我碰到一個問題是大部分語言可能都會碰到的難題, : ﹝C#除外,我在MSDN上有找到solution﹞ : 就是,我在windows底下開發,預計在windows底下執行。 : 我可以使用exec或是system開啟外部程式, : 我也爬過版上的文章,google找了不少關鍵字。 : 我的問題是,我要如何關閉我用system開啟的外部程式? : 我要開啟的外部程式是IExplore.exe : windows的指令有taskkill可以使用,但是我需要知道我開啟的程式的pid, : 同時也有tasklist可以使用,可是如果同時有兩個以上的IE在執行, : 我不知道哪一個才是我開啟的。 : perl的function getppid是取得parent的pid,不適用... : 所以想請問,有任何建議的方法嗎??? use Win32::Process::List; use Win32::Process; my $P = Win32::Process::List->new(); my %tasklist= $P->GetProcesses(); foreach $pid(keys %tasklist) { print "$pid $tasklist{$pid}\n"; #Win32::Process::KillProcess($pid, $errcode); } 註解那行就是KILL的方法 ~~~~~~~~~~~~~~ 如果要跑這個範例不要拿掉那個註解 沒有設下任何條件if 會把所有程序都kill掉喔!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.121.197.133 ※ 編輯: jjt 來自: 140.121.197.133 (01/19 10:29)

01/19 14:43, , 1F
感謝:)
01/19 14:43, 1F
文章代碼(AID): #17aL-KHX (Perl)
文章代碼(AID): #17aL-KHX (Perl)