posix_spawnと共有ファイル記述子

posix_spawnと共有ファイル記述子

複数のプロセスが同じリスニングソケットを共有できるようにするサイドプロジェクトを進めています。私が読んだLinuxドキュメントによると、posix_spawnファイル記述子が保存されているので完全に機能するはずですが、この共有が実際にどのように実行されるのかわかりません。

ファイル記述子をパラメータとして渡すことは、FDの値をハードコーディングするのと同じように、ある意味では面倒です。同じでも構いませんが、正確ではありません。

Q:サブプロセスでファイルディスクリプタ共有を正しく使用する方法は?私が見つけたすべての結果はこれを防ぐ方法ですが、この場合は望ましい動作です。 :-)

私が使用するサンプルコード:

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)")

関連情報