Calling fork() from Swift
// Note: calling fork() can be unsafe and dangerous, that | |
// is why Swift doesn't let you invoke it directy. Be very | |
// careful about how you use fork(). For some more details, | |
// see https://www.evanjones.ca/fork-is-dangerous.html and | |
// http://www.sealiesoftware.com/blog/archive/2017/6/5/Objective-C_and_fork_in_macOS_1013.html | |
import Darwin | |
let RTLD_DEFAULT = UnsafeMutableRawPointer(bitPattern: -2) | |
let forkPtr = dlsym(RTLD_DEFAULT, "fork") | |
typealias ForkType = @convention(c) () -> Int32 | |
let fork = unsafeBitCast(forkPtr, to: ForkType.self) | |
switch fork() { | |
case -1: | |
print("Error") | |
case 0: | |
print("Child") | |
default: | |
print("Parent") | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment