Source code for "How programs get run"
[Posted January 26, 2015 by jake]
do_execve.c
#include <errno.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
char *args[] = {"zero", "one", "two", NULL};
char *envp[] = {"ENVVAR1=1", "ENVVAR2=2", NULL};
execve(argv[1], args, envp);
/* won't reach here if argv[1] can be executed */
fprintf(stderr, "Failed to execute '%s', %s\n", argv[1], strerror(errno));
return 1;
}
show_info.c
#include <stdio.h>
extern char **environ;
int main(int argc, char *argv[])
{
int ii;
char **p = environ;
for (ii = 0; ii < argc; ii++)
printf("argv[%d] = '%s'\n", ii, argv[ii]);
while (*p)
printf("%s\n", *p++);
return 0;
}
show_info.sh
#!/bin/sh
echo "\$0 = '$0'"
ii=1
for arg in "$@"; do
echo "\$$ii = '$arg'"
ii=`expr $ii + 1`
done
env