Я пытаюсь отправить аргументы (например: ls, date, cal) в новую оболочку, выполнить эти аргументы и завершить работу.
#include"header.h" //includes all the header files
int main(int argc,char * argv[],char *envp[]) {
char *ap[]={"sh","ls",NULL};
int p=execve("/bin/sh",ap,envp);
printf("error:%d",p);
perror("execve");
}
выход:
sh:0:can't open ls
char *ap[]={"ls",NULL};
- person Jean-François Fabre   schedule 22.09.2017{"sh", "-c", "ls", 0}
.-c
означает, что следующим аргументом является команда; без него первый аргумент, не являющийся опцией, дляsh
интерпретируется как имя вызываемого сценария оболочки. - person zwol   schedule 22.09.2017