./shellを実行しようとするとcdに/ がインクルードディレクトリに実際には変更されません。ここに私のコード:なぜchdir()が動作しないのですか?
int cd(char *path) {
printf("i got there at least\n");
if(path == NULL) {
printf("dont waork\n");
print_usage();
} else {
printf("print please\n");
int dir_change = chdir(path);
if(dir_change != 0)
print_no_directory(path);
}
return 1;
}
int shell(int argc, char *argv[]) {
pid_t pid;
int status;
pid = fork();
if(pid == 0) {
execl("cd", argv[0], argv[1], argv[2], (char*)NULL);
printf("argv[1]: %s\n", argv[1]);
if(!strcmp(argv[1], "cd")) {
cd(argv[2]);
}
} else if(pid > 0) {
waitpid(pid, &status, WUNTRACED);
} else {
print_fork_failed();
}
return 0;
}
私のコードに間違いはありません。
私はプロセスをフォークしようとしましたが、まだ動作しません:/ – franklinsing
@franklinsingいいえ、もちろん、fork()の*目的*は新しいプロセスを作成することです。新しいプロセスの現在のディレクトリを変更しても、その親に "継承されることはありません"というのが私の主張です。 – unwind
ああ、私はあなたが何を意味するかを見て、ありがとう! – franklinsing