Skip to content

Instantly share code, notes, and snippets.

@bugaevc bugaevc/fork.swift
Created Oct 8, 2018

Embed
What would you like to do?
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
You can’t perform that action at this time.