Eri*_*tto 6 macos cocoa process objective-c
得到以下所有好处:
我们可以在C或Objective C中为Mac做到这一点吗?一些示例代码会很棒!
这样做的通常方法是放入C并枚举系统上的进程序列号(回溯到Mac OS X之前的日子。)NSWorkspace具有API,但它们并不总是按您期望的方式工作。
请注意,即使经典进程(在PowerPC系统上)都共享一个进程ID,也会使用此代码(具有不同的进程序列号)进行枚举。
void DoWithProcesses(void (^ callback)(pid_t)) {
ProcessSerialNumber psn = { 0, kNoProcess };
while (noErr == GetNextProcess(&psn)) {
pid_t pid;
if (noErr == GetProcessPID(&psn, &pid)) {
callback(pid);
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以调用该函数并传递一个将对PID进行所需操作的块。
使用NSRunningApplication和NSWorkspace:
void DoWithProcesses(void (^ callback)(pid_t)) {
NSArray *runningApplications = [[NSWorkspace sharedWorkspace] runningApplications];
for (NSRunningApplication *app in runningApplications) {
pid_t pid = [app processIdentifier];
if (pid != ((pid_t)-1)) {
callback(pid);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7230 次 |
| 最近记录: |