내 주요 기능이 반환 한 것을 어떻게 얻을 수 있습니까?
C 프로그램에서 터미널에서 입력을 제공하려면 다음과 같이 입력 할 수 있습니다.
int main(int argc, char *argv[])
같은 방식으로 main()
함수의 반환 값을 얻으려면 어떻게 얻을 수 있습니까?
각각에 main()
우리는 return 1
또는 return 0
; main()
터미널에서 무엇 을 반환 했는지 어떻게 알 수 있습니까?
편집 : 1
나는 echo $?
우리가의 반환 값을 얻을 수 main()
있지만 125 (Linux에서)보다 작은 값을 성공적으로 반환 할 수 있다는 것을 알았 습니다. 개보다 반환 값은 성공적으로 수신 할 수 없습니다 $ variable
때문에
왜 int
반환은 유형 main()
? 왜 보관하지 short int
않습니까?
편집 2
main()
125보다 큰 값을 반환 하면 오류 코드의 의미를 어디에서 찾을 수 있습니까?
대부분의 셸은 이전 실행 명령의 종료 코드를 $?
저장하므로 저장하거나 표시 할 수 있습니다.
$ ./a.out
$ echo $? # note - after this command $? contains the exit code of echo!
또는
$ ./a.out
$ exit_code=$? # save the exit code in another shell variable.
Linux에서는를 반환하지만 int
일반적으로 126보다 작은 값만 사용하는 것이 안전합니다. 더 높은 값은 명령 실행을 시도 할 때 발생할 수있는 다른 오류를 기록하거나 프로그램을 종료 한 신호 (있는 경우)를 기록하기 위해 예약됩니다.
셸 $?
에는 마지막 프로그램 반환 값을 보유 하는 특수 변수가있을 수 있습니다 . 따라서 프로그램이 완료된 직후 다음을 실행할 수 있습니다.
echo $?
반환 된 값을 확인합니다.
DOS / Windows에서는 errorlevel
배치 파일 내에서 사용할 수 있습니다.
executable optional arguments
if errorlevel 4 goto LABEL4
if errorlevel 3 goto LABEL3
if errorlevel 2 goto LABEL2
if errorlevel 1 goto LABEL1
:SUCCESS
echo SUCCESS; errorlevel 0
goto :eof
:LABEL1
echo FAILURE; errorlevel 1
goto :eof
:LABEL2
echo FAILURE; errorlevel 2
goto :eof
REM ...
if errorlevel 42
실제로는 "오류 수준이 42 이상인 경우"를 의미 하므로 가장 큰 것부터 가장 낮은 것까지 확인하는 것을 잊지 마십시오.
주석과 단편을 요약하여 한곳에 보관합니다.
AC 프로그램에는 항상 종료 코드 가 있으며, 프로그램이 정상적으로 종료되는지 여부, main
함수 에서 값을 반환 하거나 함수를 호출하여 스스로 결정할 수 exit
있습니다. 프로그램이 비정상적으로 종료되면 (예 : 세그먼트 오류) 운영 체제가 종료 코드를 결정합니다.
Unix (Posix)에서 종료 코드는 8 비트 값 (0-255)입니다. 상태 에 대한 다른 메타 데이터와 결합됩니다 . 다른 메타 데이터에는 프로그램이 정상적으로 종료되었는지 여부, 신호로 인해 종료되었는지 여부, 그렇다면 어떤 신호인지에 대한 정보가 포함됩니다. 자세한 내용은 wait (2) 매뉴얼 페이지를 참조하십시오.
Unix에서는 셸에서 이전 명령의 상태를 $?
특수 변수 로 액세스 할 수 있습니다 . 종료 코드는 8 비트에 불과하고 부호없는 정수로 처리되기 때문에 음수 값을 반환하면 양수로 바뀝니다. -1은 255가됩니다. 마찬가지로 255보다 큰 값을 반환하면 가장 작은 값만 반환됩니다. 중요한 8 비트가 사용됩니다. 256은 0이됩니다.
의 반환 유형 main
입니다 int
보다는, short
또는 char
특히 역사의이 시점에서, 그것을 더 작은 유형을 만드는 특별한 혜택이 없기 때문에, 그 후 수십 년이 결정되었다. 지금 변경하면 불필요한 합병증 만 발생합니다.
If you want to execute a program from C, the standard library provides the system
function, which handily returns the status of the program. (Note that system
runs commands via the shell, and you need to be very careful about escaping everything correctly if you give the command any externally provided filenames or other things on the command line.)
For more flexibility, you can execute other programs using the system calls fork
, execl
(or one of its variants, see the exec(3) manual page), and wait
(already mentioned above). This is powerful and flexible, but it's also easy to make mistakes, so be sure to read the documentation and check out some example programs first. (On the other hand, it's very much fun to learn this stuff.)
You can get the exit values with the command basic linux command echo $? The error codes are standard and the details are explained in this link
The general codes are
**
0- success
1- general errors
126- permission issue
127-Illegal command
128-Invalid arguments and fatal errors
255-Out of range**
참고URL : https://stackoverflow.com/questions/8626109/how-can-i-get-what-my-main-function-has-returned
'Program Tip' 카테고리의 다른 글
JQuery에서 도트 및 해시 기호는 무엇을 의미합니까? (0) | 2020.11.17 |
---|---|
Node.js에서 발생하는 모든 이벤트 수신 (0) | 2020.11.17 |
VirtualBox에서 우분투 게스트를 핑하는 방법 (0) | 2020.11.17 |
숫자 선택기 대화 상자를 만드는 방법은 무엇입니까? (0) | 2020.11.17 |
transform (rotate) 설정으로 Z-index가 취소됩니다. (0) | 2020.11.17 |