Я создаю массив строк, чтобы поместить атрибуты в команду (например, ls -l
), но команда exec
хочет массив символов, как я могу его решить? этот код должен создать дочерний элемент, который выполняет команду, выбранную путем ввода. У меня даже есть некоторые проблемы с wait()
, когда pid != 0
.. Вы можете помочь мне закончить его? Большое спасибо.use exec с командой, введенной с клавиатуры
int main(void) {
char array[100];
char character;
int i = 0;
char* point;
int j = 0;
printf ("Digit a string");
printf ("\n");
do {
character = getchar();
array[i] = character;
i++;
}
while (character != '\n');
array[i-1] = '\0';
i = 0;
char* string[100];
char *word = strtok(array, " .");
while (word != NULL) {
printf("%s\n", word);
string[j] = word;
word = strtok(NULL, " .");
}
printf ("\n");
pid_t pid;
pid = fork();
if (pid == -1) {
perror("");
}else if (pid == 0) {
if (execlp(string, NULL) < 0) { /* execute the command */
exit(1);
}
else {
//.. wait until the child ends
wait(pid);
}
}
return;
}
Почему бы вам не попробовать прочитать man-страницу для 'wait()'? Это должно легко ответить на часть вашего вопроса. – EOF