Сценарий swift просто открывается с /bin/bash
по Process
let process = Process()
process.executableURL = URL(fileURLWithPath:"/bin/bash")
process.environment = ProcessInfo.processInfo.environment
process.standardInput = FileHandle.standardInput
process.standardOutput = FileHandle.standardOutput
process.standardError = FileHandle.standardError
process.launch()
process.waitUntilExit()
При запуске из отладки Xcode он просто ведет себя как ожидалось:
bash-3.2$
Отображение приглашения оболочки, и может взаимодействовать через область журнала XCode.
Но когда я бегу в Терминале, он просто ничего не показывает и не может вводить команду (текст может быть введен, но ничего не происходит при возврате, даже ctl+D
).
$ ./my_executable
ls
adf
asjflasjfk
Но если я ввожу команду через стандартный ввод, она будет работать.
$ echo whoami | ./my_executable
user1
Почему ввод терминала не является стандартным вводом и почему он может работать в Xcode?