我使用Perl自動執行一些安裝過程。現在我想知道什麼時候我發起的安裝過程已經完成。我該怎麼做呢?由於這是自動化工作,我不能要求人們在稍後的時間點點火。這個功能應該是自動的。我如何在Windows上執行此操作?使用Perl輪詢流程退出
3
A
回答
3
Greg Hewgill的回答解決了你需要的底層Windows API函數,但不知道如何在Perl中使用它們。您可以使用Win32::Process模塊是:
use strict;
use warnings;
use Win32::Process;
Win32::Process::Create(
my $process,
'C:\WINDOWS\system32\notepad.exe', # path of executable
"notepad", # command line it sees
0, # don't inherit our handles
NORMAL_PRIORITY_CLASS, # process creation flags
"." # current directory for process
) or die $^E;
print "started\n";
$process->Wait(INFINITE);
print "done\n";
$process->GetExitCode(my $exitcode) or die $^E;
print "process exit code $exitcode\n";
$process
也可以被傳遞給Win32::IPC功能wait_any
和wait_all
如果你需要等待多個對象在同一時間。
+0
感謝您的幫助 – Chani 2012-01-31 11:42:11
4
在Windows上,使用該進程的句柄並調用WaitForSingleObject()
來查明進程何時終止。如果您只有進程ID,則可以使用OpenProcess()
來處理它。 (當然,如果你用CreateProcess()
自己創建了這個進程,你已經有了一個處理它的方法。)
相關問題
- 1. 退出輪詢超時
- 2. 使用kill退出線程輪詢中的空閒線程是否優雅?
- 3. 如何退出jQuery的遞歸輪詢?
- 4. Perl線程 - 捕獲退出
- 5. perl線程異常退出
- 6. 用緩衝使用輪詢功能流
- 7. 使用javascript使元素輪流出現
- 8. 如何退出流程?
- 9. 的Perl - 退出恆
- 10. Perl FCGI無需退出退出
- 11. 使用輪詢
- 12. Perl隊列和線程異常退出
- 13. Perl:退出前清理活動線程
- 14. Perl,等待非子進程退出
- 15. 在Perl中啓動的退出進程
- 16. 使用jboss輪詢
- 17. 輪流使用信號量
- 18. Hudson SCM輪詢線程輪詢
- 19. AlertDialog輪流重新出現
- 20. AngularJS輪詢拋出
- 21. perl system退出代碼36096
- 22. perl的不退出頁面
- 23. Upstart和uWSGI,不退出工作流程
- 24. 我的流程是如何退出的?
- 25. android編程停止mediaplayer流在退出?
- 26. 這個程序使用長輪詢?
- 27. 輪詢多線程和CPU使用率
- 28. 使用websocket彈簧初始化的長輪詢回退
- 29. a4j:推送不使用websockets並退回長輪詢
- 30. 節點輪詢器不能正常退出
問題是,你到底在等什麼?也許完成一個過程?如果是這樣,你知道過程的名稱或PID嗎? – 2012-01-31 05:56:29
@GregHewgill我在windows上工作,所以你..我會等待一個過程完成..你能告訴我如何檢查在Windows上的進程終止。 – Chani 2012-01-31 06:57:46