Я новичок в языке программирования C на Unix и пытаюсь создать подобную оболочке программу на C. Однако программа выдает ошибку, если я пытаюсь изменить функцию в соответствии с моими собственными выборами. Например, как кажется, / bin / ls -l работает, но pwd не . Это может быть просто, но я не мог понять проблему.
if (fork() == 0)
{
char* argv[3];
argv[0] = "/bin/ls";
argv[1] = "-l";
argv[2] = NULL;
if(execv(argv[0], argv)==-1)
printf("Error in calling exec!!");
printf("I will not be printed!\n");
}
Эта функция работает. Я ясно вижу результаты на оболочке.
Однако, если я хочу измениться, это выдает ошибку.
if(fork() == 0){
char * argv[2];
argv[0] = "pwd";
argv[1] = NULL;
if(execv(argv[0], argv) == -1)
printf("Error in calling exec!");
}