source

리턴 1, 리턴 0, 리턴 -1과 출구의 차이?

lovecheck 2023. 8. 20. 11:57
반응형

리턴 1, 리턴 0, 리턴 -1과 출구의 차이?

다음 코드를 예로 들어 보겠습니다.

int main(int argc,char *argv[])
{
   int *p,*q;
   p = (int *)malloc(sizeof(int)*10);
   q = (int *)malloc(sizeof(int)*10);
   if (p == 0)
   {
      printf("ERROR: Out of memory\n");
      return 1;
   }

   
   if (q == 0)
   {
      printf("ERROR: Out of memory\n");
      exit(0);
   }
   
   return 0;
}

무엇인가.return 0,return 1,exit(0)위 프로그램에서 무엇을 합니까?exit(0)토탈 프로그램을 종료하고 컨트롤이 루프에서 나오지만 다음과 같은 경우에 발생합니다.return 0,return 1,return -1.

return부터main()와 동등합니다.exit

프로그램은 종료 상태가 다음으로 전달된 값으로 설정된 상태에서 실행을 즉시 종료합니다.return또는exit

return내적 기능으로 (그렇지 않은)main)는 지정된 결과를 호출 함수로 반환하는 특정 함수의 실행을 즉시 종료합니다.

exit코드의 모든 위치에서 프로그램 실행을 즉시 종료합니다.


상태 0은 프로그램이 성공했음을 의미합니다.

상태가 0과 다르다는 것은 오류 또는 이상으로 인해 프로그램이 종료되었음을 의미합니다.

0과 다른 상태로 종료할 경우 다음에 오류 메시지를 인쇄해야 합니다.stderr그래서 사용하는 대신에printf와 같은 것이 더 낫습니다.

if(errorOccurred) {
    fprintf(stderr, "meaningful message here\n");
    return -1;
}

(사용 중인 OS에 따라) 반환 코드에 대한 몇 가지 규칙이 있습니다.

Google에서 "종료 상태 코드" 또는 유사한 것을 검색하면 SO 및 기타에서 많은 정보를 찾을 수 있습니다.


액세스할 수 없는 읽기 메모리와 같은 일부 잘못된 작업을 시도할 경우 OS 자체가 특정 종료 상태 코드로 프로그램을 종료할 수 있음을 언급할 가치가 있습니다.

실행 상태를 나타냅니다.

상태 0은 프로그램이 성공했음을 의미합니다.

상태가 0과 다르다는 것은 오류 또는 이상으로 인해 프로그램이 종료되었음을 의미합니다.

기본 입력 함수에서 프로세스를 종료하고 프로세스의 결과를 상위 프로세스(프로세스를 실행한 프로세스)에 보고합니다.0은 성공을 의미합니다.다른 코드는 일반적으로 실패와 그 의미를 나타냅니다.

return n기본 입력 기능에서 프로세스를 종료하고 프로세스의 결과를 상위 프로세스(프로세스를 실행한 프로세스)에 보고합니다.0은 성공을 의미합니다.다른 코드는 일반적으로 실패와 그 의미를 나타냅니다.

여기서 설명한 바와 같이, 다음과 같은 맥락에서.main둘다요.return그리고.exit같은 일을 합니다.

Q: 왜 그래야 합니까?return또는exit?

A: 실행 상태를 나타냅니다.

예를 들어 반환 또는 종료 문이 없더라도 코드는 정상적으로 실행됩니다(다른 모든 것이 구문적으로 정확하다고 가정할 경우 등).또한, 만약 (그리고 그래야 한다면)main아온다를 합니다.int그것이 필요합니다return 0마지막에).

그러나 실행 후에는 코드가 예상대로 작동하는지 확인할 방법이 없습니다.할 수 (**nix 환경에서 ).$?는 ((으)로 된) 코드를 exit또는return에 종료할 수 있습니다 이러한 코드를 직접 설정하기 때문에 종료 전에 코드가 도달한 시점을 이해할 수 있습니다.

다니있습다▁write를 쓸 수 있습니다.return 123123실행 후 검사의 성공을 나타냅니다.

환경에서는 *nix 환경에서0성공으로 간주되고 0이 아닌 코드가 실패로 간주됩니다.

return nmain는 와동합다니등다에 합니다.exit(n).

반환된 유효한 항목은 프로그램의 나머지 부분입니다.OS에 의존한다는 의미입니다.unix에서 0은 정상 종료를 의미하고 0이 아님은 오류로 인해 프로그램이 의도한 목적을 달성하지 못하고 종료되었음을 나타냅니다.

예제에서 메모리가 부족한 것처럼 보일 때 0(정상 종료)을 반환하는 것은 드문 일입니다.

return function 와 함에서실행다호시반게환에고하자출을수,▁to,exitfrom 함수가 프로그램을 종료합니다.

mainreturn 0또는exit(0)동일하지만 만약 당신이 쓴다면.exit(0)다른 기능을 사용하면 프로그램이 해당 위치에서 종료됩니다.

다른 값을 반환합니다.return 1또는return -1프로그램이 오류를 반환하고 있음을 의미합니다.

exit(0)프로그램을 종료하는 데 사용되며 로컬 범위의 정적이 아닌 개체에 대한 소멸자는 호출되지 않습니다.그러나 반환 0이 사용되는 경우 소멸자가 호출됩니다.

언급URL : https://stackoverflow.com/questions/22604196/difference-between-return-1-return-0-return-1-and-exit

반응형