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;
}