|
|
Log in / Subscribe / Register

Source code for "How programs get run"

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


to post comments


Copyright © 2015, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds