1
0

Process.swift 784 B

123456789101112131415161718192021222324252627282930
  1. //
  2. // Process
  3. // Swifter
  4. //
  5. // Copyright (c) 2014-2016 Damian Kołakowski. All rights reserved.
  6. //
  7. import Foundation
  8. public class Process {
  9. public static var PID: Int { return Int(getpid()) }
  10. public typealias SignalCallback = Int32 -> Void
  11. private static var signalsWatchers = [SignalCallback]()
  12. private static var signalsObserved = false
  13. public static func watchSignals(_ callback: SignalCallback) {
  14. if !signalsObserved {
  15. [SIGTERM, SIGHUP, SIGSTOP, SIGINFO, SIGINT].forEach { item in
  16. signal(item) {
  17. signum in Process.signalsWatchers.forEach { $0(signum) }
  18. }
  19. }
  20. signalsObserved = true
  21. }
  22. signalsWatchers.append(callback)
  23. }
  24. }