が、以下は現在のRubyスクリプトを終了し、SSHのインスタンスを使用してプロセスに置き換えられます異なる:ルビーを使用する場合は1
exec "ssh host -p 1234 -v"
が、このことは可能ですスウィフトでやる?
が、以下は現在のRubyスクリプトを終了し、SSHのインスタンスを使用してプロセスに置き換えられます異なる:ルビーを使用する場合は1
exec "ssh host -p 1234 -v"
が、このことは可能ですスウィフトでやる?
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")
ここでは、あなたがconst char *
を期待 C関数strdup()
にスウィフトの文字列を渡すことができることを使用し、 コンパイラは、一時的なUTF-8表現( String value to UnsafePointer<UInt8> function parameter behaviorを参照)を作成しています。
Swiftには 'system' APIがありましたが、' posix_spawn' APIと 'NSTask'の代わりに非推奨です。私はそれらから始めるだろう。 – JAL
@ JAL:これらは若干異なりますが、posix_spawnは新しいプロセスを作成します。 execX関数は、既存のプロセスを置き換えます。 –