语法与 C 程序相同:
signal(SIGPIPE, SIG_IGN)
Run Code Online (Sandbox Code Playgroud)
问题是SIG_IGN在 Swift 中没有定义。对于 C 程序,它定义<sys/signal.h>为
#define SIG_IGN (void (*)(int))1
Run Code Online (Sandbox Code Playgroud)
但是这个整数到指针的转换没有导入到 Swift 中,所以你必须自己定义它:
let SIG_IGN = CFunctionPointer<((Int32) -> Void)>(COpaquePointer(bitPattern: 1))
signal(SIGPIPE, SIG_IGN)
Run Code Online (Sandbox Code Playgroud)
对于Swift 2 (Xcode 7),以下应该有效:
typealias SigHandler = @convention(c) (Int32) -> Void
let SIG_IGN = unsafeBitCast(COpaquePointer(bitPattern: 1), SigHandler.self)
signal(SIGPIPE, SIG_IGN)
Run Code Online (Sandbox Code Playgroud)
从Swift 2.1 (Xcode 7.1) 开始, SIG_IGN被定义为公共属性,您可以简单地编写
signal(SIGPIPE, SIG_IGN)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1884 次 |
| 最近记录: |