簡體   English   中英

無法在Cocoa中找到正在運行的應用程序

[英]Unable to find running application in Cocoa

我使用以下代碼獲取在Cocoa中運行應用程序的列表:

for (NSRunningApplication *app in [[NSWorkspace sharedWorkspace] runningApplications]) {
   MNSLog(@"%@",[app localizedName]);
}

但是,我從終端會話開始的應用程序沒有出現在列表中(“終端”很好地出現)。 應用程序是從執行可可代碼的同一用戶啟動的。

我在終端下啟動了應用程序嗎? 在這種情況下,我怎樣才能找到它的名字和參數?

在另一個終端會話中運行ps會正確顯示我的進程。

使用NSTask執行ps Shell命令。 您可以檢查ps手冊頁以根據要返回的信息確定要傳遞的參數。 使用NSPipeNSFileHandle從任務中獲取結果。

如果你想做一些過濾,你可以在應用程序獲取結果之前通過grep管道ps輸出。

對於您的第一個問題,我認為NSWorkspace只能看到使用窗口服務器的應用程序,因此您只能看到終端,而不是內部運行的可執行文件。

您可以使用sysctlps命令獲取所有BSD進程的列表。 看看無法檢測到與其他用戶一起運行的應用程序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM