Я использую execvp () для запуска некоторых системных вызовов. Программа отлично работает для допустимых команд и не работает для любой команды, которая не существует, что идеально.
Программа, когда я использую execvp () для команды, которая нуждается в дополнительных аргументах (например, cat), и я не предоставляю аргументы, программа просто бесконечно читает из ввода.
Я не уверен, как обойти эту проблему, так как я не знаю, как «сказать», является ли команда неполной. Есть идеи?
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <unistd.h>
int main(int argc, char* argv[]) {
char command[1000];
printf("Enter command: ");
scanf("%[^\n]s", command);
char *temp = strtok(command, " ");
char *commandList[100];
int index = 0;
while (temp != NULL) {
commandList[index] = temp;
index++;
temp = strtok(NULL, " ");
}
commandList[index] = NULL;
execvp(commandList[0], commandList);
printf("Failed");
}
Идеальным результатом будет печать "Команда не выполнена" и процесс завершится.