Ir para conteúdo
Fórum Script Brasil

pierao

Membros
  • Total de itens

    4
  • Registro em

  • Última visita

Tudo que pierao postou

  1. Perfeito seu reply!!! você é o cara!!!
  2. queria enteder de uma vez por todas como funcionam certas coisas no C: eu tenho que fazer um programa que recebe na linha de comando assim: nome_do_prog NUMERO file1 file2 ... fileN -o NUMERO sera' o numero de filhos que deverao ser criados e executarao os N primeiros files da linha de comando. Eu cheguei a fazer a primeira parte que é pegar do argv[] os seus valores e colocar dentro de variaveis pra poder chamar uma funcao denominada paralelo(int num; char executable[255]) onde serao executados os N files. -Vamos ao que interessa: int main(int argc, char** argv) { int j, x, m, n, cont; int k; char* comandi[255] = {NULL}; k=atoi(argv[1]); printf("K vale %d\n", k); for(cont=0;cont<k+1;cont++) { comandi[cont]=strdup(argv[cont+1]); printf("copiado o file para execucao em paralelo: %s\n ", comandi[cont]); } x=paralelo(k, comandi[255]); essa primeira parte coloca o valor de argv[1] em k e nome dos files em um vetor chamado comandi[] Com esses 2 vetores eu chamo uma funcao chamada paralelo(k, comandi[255]) : int paralelo(int num, char executable[255]) // ta certa essa chamada do programa ??? Acho q da dando tudo errado quando eu chamo ele com " paralelo(k, comandi[255])" { int i,pid,status, morte; char files[255]; printf("Serao criados %d filhos em paralelo\n", num); for(i=0;i<num;i++) { pid=fork(); if(pid==0) { printf("%s\n", files[i]); execl("????"); // AQUI: como faço para que o filho execute o programa que tem o nome armazenado em executable[] ??? exit(0); } if(pid!=0) { morte=wait(&status); printf("E morto il figlio %d\n", morte); } } return(0); } preciso de achar um modo para que cada filho no ciclo for execute o arquivo que foi passado a executable[255] Acho q a chamada do programa paralelo(k, comandi[255]) ta errada. alguém me da uma luz ?
  3. boa tarde pessoal Boa tarde pessoal. To fazendo um programa que eu tenho que copiar as strings do ARGV[] para um vetor de ponteiros. int main(int argc, char** argv) { int j, i, x, m, n,status, cont; int k; char* comandi[10]; k=0; n=argc; k=atoi(argv[1]); for(cont=0;cont<k;cont++) { comandi[i]=strdup(argv[i+1]); } //x=paralelo(k); printf("os comandos são: %s\n %s\n %s\n ", comandi[0], comandi[1], comandi[2]); } O problema é que se eu deixar a linha "k=atoi(argv[1]);" ele me da segmentation fault na hora de chamar o programa pelo nome, por exemplo ./programa 5 file1 file2 file3 ele teria em argv[1] a string "5" com o atoi eu transformaria ela pra um inteiro e armazenaria o valor em "k", correto ? Mesmo assim, tirando a linha k=... o programa roda e me retorna uns caracteres ilegeiveis no printf final. alguém pode me dizer q q eu to fazendo de errado ? já tentei até usar o strdup pra alocar a memoria mas mesmo assim acho q eu to fazendo algo errado. ajuda ???
×
×
  • Criar Novo...