在Swift命令行应用程序中捕获信号
发布于 2021-01-31 23:46:56
如何捕捉到不同的信号,如SIGINT
和SIGTERM
斯威夫特是否正确?例如,当人们通过按Control
-
停止我的脚本时C
,我想在终止脚本之前进行一些清理。
关注者
0
被浏览
71
1 个回答
-
调度源
可用于监视UNIX信号。这是一个简单的示例,《
并发编程指南
》中“监视信号”部分中C代码的Swift
3转换 。import Dispatch // or Foundation signal(SIGINT, SIG_IGN) // // Make sure the signal does not terminate the application. let sigintSrc = DispatchSource.makeSignalSource(signal: SIGINT, queue: .main) sigintSrc.setEventHandler { print("Got SIGINT") // ... exit(0) } sigintSrc.resume()
请注意,这需要一个活动的GCD事件循环,例如
dispatchMain()
在命令行程序中。