私は単純なシェルに取り組んでいる別の CS 初心者です。現時点では、引数が渡された場合は現在のディレクトリを変更しようとしています。それ以外の場合は、現在のディレクトリに報告します。
プログラムで使用chdir()
してみましたが、明らかに機能していません。char*
トークン化された引数を渡そうとしました。も試しましargv[1]
たが、どちらもうまくいかないようなので、何か間違ったことをしているに違いありません。
また、引数ポインター (ディレクトリ文字列を含む) を静的にする方法が正確にわからないため、 putenv(ARGUMENT HERE) を使用しても問題はありません。
これが私のコードの関連部分です:
else if (strncmp(command[0], "cd", 2) == 0)
{
char *argmnts = strtok(0, " ");
if (arguments != NULL)
{
chdir(argmnts);
putenv(argmnts); // THE ARG STRING NEEDS TO BE A STATIC COPY
getcwd(promptBuff, sizeof(argmnts));
}
}
ポインター argmnts は、トークン化された引数の部分を指します。char strnBuffer[1000]
これは、コマンドに対して既にトークン化されています。command[0] = strtok(strnBuffer, " ");
ヘルプ/洞察に本当に感謝しています。
ありがとうございました。