posix_spawn 和共享文件描述符

posix_spawn 和共享文件描述符

我正在玩一个副项目,我想让多个进程共享同一个监听套接字。在我读到的linux文档中,它将posix_spawn保留文件描述符,因此它应该可以完美工作;但我不确定这种共享实际上是如何完成的。

将文件描述符作为参数传递在某种程度上感觉很麻烦,对 FD 的值进行硬编码也是如此,尽管它可能是相同的,但它只是不正确。

问:如何在子进程中正确使用文件描述符共享?我找到的所有结果都是如何防止它,但在这种情况下它是期望的行为:-)

我正在使用的示例代码:

let pathToExecutable = CommandLine.arguments[0]

// CLI Options parsing
let options = IgniteOptions.parseOrExit()

// For now the child does nothing.
if (options.isChild) {
    print("Hello World from child process!")
    exit(0)
}

// Creates and binds a TCP socket to the given host / port
let socket = Socket(host: "0.0.0.0", port: options.port)

// Calls posix_spawn in a swift friendly manner (only transforms the params really)
let pid = try spawn(pathToExecutable, args: [pathToExecutable, "-d"])
print("PID of child: \(pid)")

相关内容