私の目標は、Linuxの基本シェルのようなCプログラムを書くことです。作業ディレクトリの変更以外はすべて作業しています。私はcd
の入力文字列に対してsystem()
を試しましたが、何も起こりませんでした。私もchdir("tokened string")
と幸運を試しました。誰にでもアイデアはありますか?これは私のコードの一部です:CプログラムのLinuxシェルの作業ディレクトリの変更
fgets(cmdStr, sizeof(cmdStr), stdin);
if(strncmp("quit", cmdStr, 4) == 0 || strncmp("Quit", cmdStr, 4) == 0 )
{
break;
}
else if(strncmp("cd", cmdStr, 2) == 0)
{
char *token = strtok(cmdStr, " ");
token = strtok(NULL, " ");
chdir(token);
}
else
{
system(cmdStr);
}
}
これは可能ですか?あるいは、これは、子供の殻が何かをすることができないことと関係がある単純なケースですか?
編集:上記のコードは完了です。
'chdir'が正しいです。戻り値は何ですか? -1の場合、errnoは何ですか? (システムコールの戻り値は常にチェックしてください。) – Nemo
@Nemo文字列が何であれ、戻り値は-1です。異なる文字列で複数回試しました。 -1とともに生成されるエラーをチェックする方法が不明です。助言がありますか? – yaegerbomb
errnoを確認してください – hari