3
Я новичок в системных вызовах и программировании на С и работаю над своим университетским заданием.Вызов 'ls' с execv
Я хочу вызвать команду «ls» и распечатать ее.
Что у меня есть: (я добавил комментарии в так что вы можете увидеть, что я вижу, проходящий через каждую переменную
int execute(command* cmd){
char full_path[50];
find_fullP(full_path, p_cmd);
//find_fullP successfully updates full_path to /bin/ls
char* args[p_cmd->argc];
args[0] = p_cmd->name;
int i;
for(i = 1; i < p_cmd->argc; i++){
args[i] = p_cmd->argv[i];
}
/*
* this piece of code updates an args variable which holds arguments
* (stored in the struct) in case the command is something else that takes
* arguments. In this case, it will hold nothing since the command
* will be just 'ls'.
*/
int child_process_status;
pid_t child_pid;
pid_t pid;
child_pid = fork();
if (child_pid == 0) {
execv(full_path, args);
perror("fork child process error condition!");
}
pid = wait(&child_process_status);
return 0;
}
Я ничего происходит не видя и путаюсь, любая идея
Использование 'opendir' , 'readdir' и' closedir' вместо использования внешней программы. –
. Добавить регистрацию (просто печать материала в порядке), чтобы узнать, как далеко вы доберетесь, и будут ли переменные содержать значения, которые, по вашему мнению, они хранятся. Или используйте отладчик. –
@EdHeal Как вы думаете, получится ли полная оценка при представлении в качестве университетского задания? – Kaz