#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <time.h>
#include <string.h>
void getCommand(char* cmd, char** arg_list)
{
pid_t child_pid;
child_pid = fork();
if (child_pid == 0)
{
execvp (cmd, arg_list);
fprintf(stderr, "error");
abort();
}
}
int main(void)
{
printf("Type the command\n");
char *arg_list[] = {NULL, NULL, NULL, NULL, NULL, NULL, NULL};
char cmd[20];
char delim[2] = " ";
char *token;
scanf("%[^\n]", cmd);
token = strtok(cmd, delim);
while (token != NULL)
{
arg_list[0] = token;
token = strtok(NULL, cmd);
}
getCommand (arg_list[0], arg_list);
return 0;
}
Что я пытаюсь достичь здесь, я хочу прочитать пользовательский ввод, который должен быть командой linux, а затем выполнить команду. Кажется, что я не могу использовать strtok для разделения строки. Я немного потерян, спасибо за помощь.Пользовательский ввод в команду linux в C
paddy получил вашу основную проблему. Вы должны привыкнуть проверять errno. Печать «ошибка» не собирается вам много рассказывать. Также вы можете захотеть родительский 'wait' на дочернем элементе. – Duck