在Swift命令行应用程序中捕获信号

发布于 2021-01-31 23:46:56

如何捕捉到不同的信号,如SIGINTSIGTERM斯威夫特是否正确?例如,当人们通过按Control-
停止我的脚本时C,我想在终止脚本之前进行一些清理。

关注者
0
被浏览
71
1 个回答
  • 面试哥
    面试哥 2021-01-31
    为面试而生,有面试问题,就找面试哥。

    调度源
    可用于监视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()
    

    在命令行程序中。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看