1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| #include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main(int argc, char **argv) {
int i, j, status;
pid_t pid;
char *my_cmd[3] = { "/bin/pwd", "/usr/bin/who", "/bin/ls" };
char *my_args[3][3] = { { "pwd", NULL }, { "who", NULL }, { "ls", "-l", NULL } };
for (i = 0; i < 3; i++) {
/* affichage pour faire joli */
printf ("\n%d: cmd=\"%s\"\t", i, my_cmd[i]);
j = 0;
do {
printf ("argv[%d]=\"%s\"\t", j, my_args[i][j]);
} while (my_args[i][++j]);
printf ("\n");
/* le lancement des process a proprement parler */
pid = fork();
if (pid < 0) {
perror("fork()");
exit(-1);
}
if (pid == 0) { /* child */
execv(my_cmd[i], my_args[i]);
exit(-1);
} else { /* parent */
waitpid(pid, &status, 0);
}
}
return 0;
} |