Originariamente inviato da magicofred
vorrei chiedervi degli esempi pratici e reali su come usare le varie exec
Innanzitutto bisogna dire che le execXX si usano in genere dopo che è stato fatto il fork del processo. Questo perché una exec rimpiazza di brutto l'immagine del processo corrente con il nuovo processo caricato.

Si fa una fork() e poi nel processo figlio si esegue una exec. Ecco un esempio:

codice:
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>

int main (void)
{
    pid_t pid;

    pid = fork ();

    if (pid == 0)
    {
        /*---- figlio ----*/
        int ret;
        char *args[4] = { "ls", "-laA", "/tmp", NULL };

        ret = execvp (args[0], args);
        if (ret == -1)
            perror ("execvp");
    }
    else if (pid != -1)
    {
        /*---- padre ----*/
        int status;

        waitpid (pid, &status, 0);
        printf ("Status: %d\n", status);
    }
    else
        perror ("fork");

    return 0;
}