이 완료 스위프트 프로그램은 255의 종료 코드 제공 :Swift (Darwin)에서 exit()가 UInt8 대신 Int32를 사용하는 이유는 무엇입니까?
import Darwin
exit(-1)
내가 Program ended with exit code: 255
를 얻을 엑스 코드 내에서 실행; 명령 줄에서 컴파일하고 실행할 때 echo $?
은 255
을 생성합니다. 어떤 점에서 Int32(-1)
은 잘려서 부호없는 8 비트 정수로 해석됩니다.
아마 Darwin 어딘가에서 또는 값이 호스트 쉘 또는 OS로 전달 될 때 어디에서 발생하는지 알 수 없지만 exit()
은 Darwin 라이브러리 기능 (Swift 언어 기능 아님)이기 때문에 플랫폼과 관련하여 이미 정의 된 이유는 UInt8
대신 Int32
을 사용해야하는 이유는 무엇입니까?
예 : http://stackoverflow.com/questions/1703741/basic-c-question-about-return-values 또는 http://stackoverflow.com/questions/26435730/forked-child-exits-with-1-but-wexitstatus- gets-255. –
@MartinR이 두 가지 질문은 C에 관한 것이지만이 질문은 왜 255가 튀어 나오는 지에 관한 것이 아닙니다. 그것은 Swift의 exit() 함수가 Swift 프로그래머 (다른 언어를 한 번도 해 본 적이없는 사람)에게 더 현명하지 않고 설계/정의 된 이유입니다. 그것은 나에게 분명히 비 관대 해 보인다. – jhabbott
'exit()'는 C 라이브러리 함수이며, C 또는 Swift에서 호출하면 상관 없습니다. –