gpt4 book ai didi

swift - iOS SWIFT 应用程序 - 如何全局忽略 SIGPIPE 信号?

转载 作者:搜寻专家 更新时间:2023-10-31 08:34:17 24 4
gpt4 key购买 nike

我试图忽略我在 Swift 应用程序中使用的第三方 SDK 抛出的 SIGPIPE 信号。如何让我的应用程序全局忽略 SIGPIPE 信号?

最佳答案

语法与 C 程序中的语法相同:

signal(SIGPIPE, SIG_IGN)

问题是 SIG_IGN没有在 Swift 中定义。对于 C 程序,它被定义在<sys/signal.h>作为

#define SIG_IGN     (void (*)(int))1

但是这个整数到指针的转换并没有导入到 Swift 中,所以你有自己定义:

let SIG_IGN = CFunctionPointer<((Int32) -> Void)>(COpaquePointer(bitPattern: 1))
signal(SIGPIPE, SIG_IGN)

对于 Swift 2 (Xcode 7),以下应该有效:

typealias SigHandler = @convention(c) (Int32) -> Void
let SIG_IGN = unsafeBitCast(COpaquePointer(bitPattern: 1), SigHandler.self)
signal(SIGPIPE, SIG_IGN)

Swift 2.1 (Xcode 7.1) 开始 SIG_IGN被定义为公共(public)属性(property)你可以简单地写

signal(SIGPIPE, SIG_IGN)

关于swift - iOS SWIFT 应用程序 - 如何全局忽略 SIGPIPE 信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27426868/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com