ProvaPratica 2012.07.17

From Sistemi Operativi
Revision as of 13:32, 19 May 2014 by Coci (talk | contribs) (Created page with "<syntaxhighlight lang = "C"> #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <string.h> #define BUF_SIZE 20 int main(int argc, char** argv){ int ncopie, ...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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é)