ProvaPratica 2012.07.17
Jump to navigation
Jump to search
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#define BUF_SIZE 20
int main(int argc, char** argv){
int ncopie, i, ris;
char NCOPIA[BUF_SIZE];
char command[BUF_SIZE];
if (argc!=3) {printf("inserisci due argomenti (ncopie, command)\n"); exit(1);}
ncopie = atoi(argv[1]);
strcpy(command, argv[2]);
for (i = 0; i<ncopie; i++){
if(fork()){//processo padre
}
else {
char *NCOPIA;
NCOPIA = malloc(BUF_SIZE);
sprintf(NCOPIA, "%d", i);
char *newenviron[] = { NCOPIA};
ris = execve(command, NULL, newenviron);
if (ris == -1) {perror("execve"); exit(1);}
}
}
wait(NULL);
return 1;
}
Alessandro (In realtà non funziona bene, di fatto un processo fa quello che dovrebbe fare e gli altri danno bad address, se trovate l'errore correggetelo e scrivete qua sotto cosa avete cambiato e perché)