カスタムシェルでの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文があります。 2番目のifをelse ifに変更すると機能します!あなたの努力に感謝します

関連情報