2017-03-07 15 views
0

コマンドラインプログラムがユーザーによって停止され、swiftで書かれた(ターミナルで実行されている)コマンドラインプログラムからいくつかのアクティブなBluetooth接続を解放する必要があることを知る必要があります。Swift:コマンドラインツール出口コールバック

ユーザーがプログラムを呼び出すと、Ctrl + Zキーを押して終了するとします。 どうすればわかりますか?

答えて

1

Swiftでシグナルハンドラをインストールできます。例:

import Foundation 

let startTime = Date() 
var signalReceived: sig_atomic_t = 0 

signal(SIGINT) { signal in signalReceived = 1 } 

var i = 0 
while true { 
    if signalReceived == 1 { break } 
    usleep(500_000) 
    if signalReceived == 1 { break } 
    i += 1 
    print(i) 
} 

let endTime = Date() 
print("Program has run for \(endTime.timeIntervalSince(startTime)) seconds") 

this gistから変更しました。

関連する問題