Shell
$ man exec
...
int execv(const char *pathname, char *const argv[]);
...
$
Код: Выделить всё
//hello.c
//компилить gcc -o hello hello.c
#include <stdio.h>
int main (int argc, char *argv[])
{
printf ("Hello, word!");
return 0;
}
Код: Выделить всё
//run.c
//компилить gcc -o run run.c
//запускать ./run
#include <stdio.h>
#include <unistd.h>
int main ()
{
char * const argv [1] = {"foo"};
printf("%s\n", argv [0]);
execv ("hello", NULL);
// execv ("hello", &argv [0]);
// execv ("hello", argv);
return 0;
}
Так, если в execv передать NULL, программа hello вызовется без ошибок (см. код выше):
Shell
$ ./run
foo
Hello, word!
$
Код: Выделить всё
execv ("hello", &argv [0]);
Код: Выделить всё
execv ("hello", argv);
Shell
$ ./run
foo
$