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

관련 정보