Hi,
I want to take a command with its options as input and execute it with one of the exec() functions.
My approach is to take input first and put it in an array by dividing with string tokenizer. Then I call execvp() which takes the array including the command as parameter.
When I try my code with input "ls -l", I get the error below.
ls: invalid option -- '
'
I tried with different exec() functions just giving second element of array and giving path myself as "/bin/ls". But I can't make it work. There is a problem with the "-l" part.
Could you guys give me an advice? Thank you.
My code:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
int main(){
char input[30];
char* args[10];
char argIndex = 0;
printf("Enter command or program name: ");
fgets(input,30,stdin);
char* str;
str = strtok(input, " ");
while(str != NULL){
args[argIndex] = str;
argIndex++;
str = strtok(NULL, " ");
}
args[argIndex] = (char *) 0;
execvp(args[0], args);
}