這個完整的斯威夫特程序給出了255的退出代碼:在Swift(達爾文)中,爲什麼exit()採用Int32而不是UInt8?
import Darwin
exit(-1)
當從在Xcode中,我得到Program ended with exit code: 255
運行;或者編譯並在命令行echo $?
上運行時產生255
;等等。在某點Int32(-1)
被截斷並被解釋爲無符號的8位整數。
我不知道這個轉換髮生在什麼地方(可能在達爾文某處或者當這個值被傳遞到主機shell或者操作系統?),但是因爲exit()
是一個達爾文庫函數(不是Swift語言特性),已經專用於該平臺,爲什麼它定義爲採取Int32
而不是UInt8
?
參見例如http://stackoverflow.com/questions/1703741/basic-c-question-about-return-values或http://stackoverflow.com/questions/26435730/forked-child-exits-with-1-but-wexitstatus-得到-255。 –
@MartinR這兩個問題都是關於C的,這個問題不是關於爲什麼255彈出。這是關於爲什麼Swift中的exit()函數是按原樣設計/定義的,而不是Swift程序員(例如從未使用任何其他語言的人)更明智。這對我來說似乎是非常不靈活的。 – jhabbott
'exit()'是一個C庫函數,如果你從C或Swift調用它,沒關係。 –