사용자 정의 셸에서 CD 디버깅 문제 [닫기]

사용자 정의 셸에서 CD 디버깅 문제 [닫기]

내가 만든 사용자 정의 셸 cd 명령에 문제가 있습니다. 이제 cd가 유일한 매개변수인 기본 사례를 테스트하고 있습니다. 이 경우 기본 디렉터리를 /home 디렉터리로 변경해야 합니다. 계속해서 "ERROR Home" 오류가 발생하므로 이제 cd 명령을 실행하고 있지만 디렉터리는 변경되지 않습니다.


if(strcmp(command[0], "cd") == 0)
{
   int check;
   if(command[1] == NULL)
   {            
        check = chdir("/home");
        if(check != 0)
        {
           printf(" ERROR Home \n ");
        }
            
    }
    else
    {
        check = chdir(command[1]);
        if(check != 0)
        {
            printf("error command\n");
        } 
    } 
 } // end if

이 런타임 오류를 일으키는 원인을 내가 간과하고 있습니까?


다음은 다른 방식으로 명령을 입력하려고 할 때 어떤 일이 발생하는지에 대한 업데이트된 스크린샷입니다. [0]을 실행하기 전에 명령에 무엇이 있는지 확인하기 위해 인쇄 줄을 추가했습니다. 내 종료 명령이 작동하지 않습니다. 여기에 이미지 설명을 입력하세요.

답변1

chdir()은 반환 상태에서 오류가 무엇인지 알려주지만 오류 메시지에는 이를 넣지 않습니다. 친숙한 오류 메시지를 표시하는 방법을 알아보려면 perror(3) 라이브러리 호출을 읽어보세요.

답변2

알겠습니다. 이중 if 문이 있습니다. 두 번째 if를 else if로 변경하면 작동합니다! 당신의 노력에 감사드립니다

관련 정보