当前位置: 首页 > 面试题库 >

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

井学
2023-03-14
问题内容

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


问题答案:

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

在命令行程序中。



 类似资料:
  • 问题内容: 嗨,我正在开发一个需要我运行一些bash代码的应用程序,有没有一种方法可以将脚本硬编码到我的应用程序中然后运行它?例如(这是一个非常简化的示例) 我有以下方法来运行一行bash命令,但需要在多行中运行类似的内容。同样,上面的代码是一个非常简化的示例,我实际上在执行的操作必须通过脚本运行,而不能通过Java完成。我也想对它进行硬编码,因为我知道可以将脚本存储在手机上并使用以下命令运行它,

  • 场景是我们编写了一个控制台应用程序,我们希望在Inno设置期间调用该应用程序并读取其输出。与此问题相反,当其他程序仍在运行时,必须从Inno设置读取此输出。输出将包含runnig应用程序的进度信息(double或int值),我们希望用ProgressGauge在Inno中显示这些信息。该应用程序是一个用C#编写的简单可执行程序,可以运行几秒钟到几分钟。 这可能吗?如果可能,是否可以在不冻结Inno

  • 问题内容: 在集成到更大的应用程序之前,我正在尝试测试一个概念验证的命令行应用程序。我想要做的是使用此示例使用NSURLSession下载一些数据。但是,如果使用简单的OS X命令行应用程序中给出的示例,则该应用程序将在检索数据之前退出。 如何使用NSURLSession从独立的命令行应用程序下载数据?我所读的内容是使用NSRunLoop,但是我还没有在Swift中找到明确的示例,因此,如果NSR

  • 我有一个部分扎根的Android设备。所谓部分root,是指我只能通过ADB运行root命令。我已经想出了如何在设备本身的终端模拟器中本地运行这些命令。我的问题是,我将如何着手编写Android应用程序的代码,从按钮按钮执行一个ADB命令(或多个命令)?我找不到任何解释如何通过应用程序界面运行直接ADB命令的东西。只是为了澄清,任何涉及“su”的东西都不会在这个设备上工作。它只接受ADB输入进行根

  • 问题内容: 我正在与一个应用程序一起工作,该应用程序从XML Schema生成表单(使用JAXFront库),并将用户填写的数据存储到XML文档中。 我在需要时放置了try-catch-finally块,但是在主线程结束时(AWT线程仍在运行)捕获异常时我有一个小问题。 我有两个班级负责主要工作,其他班级对这个问题并不重要: 主类 :具有以下结构。初始化应用程序并运行主机 } 框架类 :生成视图和

  • 问题内容: 我正在尝试为新的Apple编程语言Swift的命令行应用程序获取键盘输入。 我扫描了文档无济于事。 有任何想法吗? 问题答案: 我设法弄清楚了,而没有陷入C: 我的解决方案如下: 较新的Xcode版本需要显式的类型转换(在Xcode 6.4中有效):