我想獲得有關運行我的行程的背景關系的指示。我想區分以下情況:
- 它作為持久計劃任務運行(launchDaemon/launchAgent)
- 它是按需呼叫的,由 launchd 使用
open命令列或雙擊創建。 - 它是直接從命令列終端呼叫的(即
> /bin/myProg從終端)
也許是否有任何關于使用 Objective-c/swift 框架或任何其他方式的流程背景關系的跡象?我希望避免在這里發明輪子:-)
謝謝
uj5u.com熱心網友回復:
顯然沒有簡單的公共 API 或框架可以做到這一點,而且做到這一點很困難。
此資訊的某些部分可能會由您的行程本身通過一些側面檢索,這將適用于某些系統版本:
有一個 launchctl C-based API,您可以嘗試使用它來列舉所有啟動守護程式/代理任務并搜索您的應用程式路徑/pid。您可能需要為您的行程提供 root 權限才能執行此操作。
使用
open命令列有時可以使用它為您的行程設定的環境變數進行跟蹤。直接從命令列運行可能會保持
responsible_pid正確填充(這是來自 libquarantine 的私有 API,除非您使用 Endpoint Security 從 11.smth 版本開始觀察它)
所有這些東西,除了launchctl API,都是不公開的,不可靠的,可能會被蘋果隨時破壞,可能不足以滿足你的需求。
但值得一試,因為沒有比這更好的了:)
您可以潛在地將使用系統事件監控的所有情況與您控制的其他一些(root 允許的)行程區分開來,可能采用端點安全框架(需要 Apple 的授權,不能通過 AppStore 分發),呼叫很多私有的API 和一系列反向技巧。
我可以就這個主題建議的開放資源在這里
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/382083.html
下一篇:SQL-SQLiteDatabaseCorruptException-編譯時檔案不是資料庫:PRAGMAjournal_mode
