Swift macOS Process.run()端口泄漏问题

4

当前代码:

#!/usr/bin/swift

import Foundation

func runSleepProcess() {
    let sleepProcess = Process()
    sleepProcess.executableURL = URL(fileURLWithPath: "/bin/sleep")
    sleepProcess.arguments = ["0"]
    try? sleepProcess.run()
    sleepProcess.waitUntilExit()
}

while true {
    runSleepProcess()
}

在活动监视器中查看,似乎每次循环时mach端口使用量会增加1。当运行外部进程时,这是预期的行为吗?如果不是,我该如何修复泄漏?谢谢。


我在macOS High Sierra(10.13.6)上运行了您的脚本,匹配端口使用的数量在40左右达到了最大值。您的数字可以达到多高? - Paulo Mattos
@PauloMattos 抱歉,我应该在原始帖子中提到:我使用的是macOS 10.14.3,并且活动监视器在不到一分钟的时间内显示了超过1,000个端口。 - the_cuaz
@apple9321 我已经查看了你的问题并更新了我的答案。 - Rajmund Zawiślak
1个回答

1
这并非预期行为,该问题已经报告。解决方法是使用 posix_spawn 代替 Process

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接