[英]Unable to find running application in Cocoa
我使用以下代碼獲取在Cocoa中運行應用程序的列表:
for (NSRunningApplication *app in [[NSWorkspace sharedWorkspace] runningApplications]) {
MNSLog(@"%@",[app localizedName]);
}
但是,我從終端會話開始的應用程序沒有出現在列表中(“終端”很好地出現)。 應用程序是從執行可可代碼的同一用戶啟動的。
我在終端下啟動了應用程序嗎? 在這種情況下,我怎樣才能找到它的名字和參數?
在另一個終端會話中運行ps會正確顯示我的進程。
使用NSTask
執行ps
Shell命令。 您可以檢查ps
手冊頁以根據要返回的信息確定要傳遞的參數。 使用NSPipe
和NSFileHandle
從任務中獲取結果。
如果你想做一些過濾,你可以在應用程序獲取結果之前通過grep
管道ps
輸出。
對於您的第一個問題,我認為NSWorkspace
只能看到使用窗口服務器的應用程序,因此您只能看到終端,而不是內部運行的可執行文件。
您可以使用sysctl
或ps
命令獲取所有BSD進程的列表。 看看無法檢測到與其他用戶一起運行的應用程序
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.