使用Ruby时,以下内容将终止当前的ruby脚本,并用ssh实例替换该进程:
exec "ssh host -p 1234 -v"
这可以在Swift中完成吗?
答案 0 :(得分:2)
execv
以及BSD库中的相关函数
可以从Swift调用(除了带变量的那些)
参数列表)。唯一的挑战"是创建一个
UnsafePointer<UnsafeMutablePointer<Int8>?>
可以作为参数列表传递。一个简单的例子:
import Foundation
let args = ["ls", "-l", "/Library"]
// Array of UnsafeMutablePointer<Int8>
let cargs = args.map { strdup($0) } + [nil]
execv("/bin/ls", cargs)
fatalError("exec failed")
这里使用的是你可以将Swift字符串传递给
期望strdup()
的C函数const char *
和。{
编译器创建一个临时的UTF-8表示(参见
String value to UnsafePointer<UInt8> function parameter behavior)。