微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Swift 运行 shell 命令卡住了,但在 xcode 调试中成功

如何解决Swift 运行 shell 命令卡住了,但在 xcode 调试中成功

我使用 swift run gradlew build,但它卡在 Start Daemom 上。

#!/usr/bin/swift sh

import Foundation


func shell(_ command: String) -> Void {
    let task = Process()
    task.standardOutput = FileHandle.standardOutput
    task.standardError = FileHandle.standardError
    task.standardInput = FileHandle.standardInput

    task.arguments = ["-c",command]
    task.launchPath = "/bin/sh"
    task.currentDirectoryPath = "/Users/MyProjectPath"
    task.launch()
    
    task.waitUntilExit()
    
    
    assert(task.terminationStatus == 0,"\(command)")
}




shell("./gradlew --debug --info :app:assembleRelease")

输出

08:52:39.590 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Changing state to: STARTING
08:52:39.591 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Waiting until process started: Gradle build daemon.
08:52:39.601 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Changing state to: STARTED
08:52:39.602 [INFO] [org.gradle.process.internal.DefaultExecHandle] Successfully started process 'Gradle build daemon'
08:52:39.602 [DEBUG] [org.gradle.launcher.daemon.client.DefaultDaemonStarter] Gradle daemon process is starting. Waiting for the daemon to detach...
08:52:39.602 [DEBUG] [org.gradle.process.internal.ExecHandleRunner] waiting until streams are handled...
08:52:39.604 [DEBUG] [org.gradle.launcher.daemon.bootstrap.DaemonOutputConsumer] Starting consuming the daemon process output.

> Starting Daemon 

它启动成功守护进程并等待守护进程输出,由于某种原因没有得到守护进程的输出

解决方法

根据苹果文档,task.launchPathtask.launch() 已“弃用”,不建议再使用。而是使用 task.executableURLtry task.run()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?