fix: ignore zombie processes
This commit is contained in:
1 parent
023561d3aa
commit
50c8c82767
2 files changed
+15
-1
No files matched your search
@@ -1,4 +1,5 @@
|
||||
import Cocoa
|
||||
import Darwin
|
||||
|
||||
extension Collection {
|
||||
// recursive flatMap
|
||||
@@ -172,3 +173,16 @@ extension NSImage {
|
||||
return dimmed
|
||||
}
|
||||
}
|
||||
|
||||
extension pid_t {
|
||||
func isZombie() -> Bool {
|
||||
var kinfo = kinfo_proc()
|
||||
var size = MemoryLayout<kinfo_proc>.stride
|
||||
var mib: [Int32] = [CTL_KERN, KERN_PROC, KERN_PROC_PID, self]
|
||||
sysctl(&mib, u_int(mib.count), &kinfo, &size, nil, 0)
|
||||
let command = withUnsafePointer(to: &kinfo.kp_proc.p_comm) {
|
||||
String(cString: UnsafeRawPointer($0).assumingMemoryBound(to: CChar.self))
|
||||
}
|
||||
return kinfo.kp_proc.p_stat == SZOMB
|
||||
}
|
||||
}
|
||||
@@ -92,7 +92,7 @@ class Applications {
|
||||
}
|
||||
|
||||
private static func isActualApplication(_ app: NSRunningApplication) -> Bool {
|
||||
return app.activationPolicy != .prohibited || isNotXpc(app)
|
||||
return (app.activationPolicy != .prohibited || isNotXpc(app)) && !app.processIdentifier.isZombie()
|
||||
}
|
||||
|
||||
private static func isNotXpc(_ app: NSRunningApplication) -> Bool {
|
||||
|
||||
Reference in new issue
Block a user