Chamar um script passando argumentos e alocando sua saída (em C) [RESOLVIDO]

1. Chamar um script passando argumentos e alocando sua saída (em C) [RESOLVIDO]

Matth
MattF

(usa Slackware)

Enviado em 01/12/2015 - 19:21h

Programadores de plantão, poderiam me ajudar com a seguinte inhaca: Um código em C que chama um script passando parâmetros de execução e ao mesmo tempo armazena a saída em uma variável. Eis um exemplo:

#include<stdlib.h>
#include<stdio.h>

void main(int argc, char *argv[]){
FILE* f;
char line[130];
f=popen("ls /home/%s", "r", argv[1]); //isso aqui não funciona, mas queria que funcionasse
while(fgets(line, sizeof line, f)){
printf("%s", line);
}
printf("\n %s", argv[1]);
pclose(f);
}



Tem alguma ideia de como fazer isso?




  


2. MELHOR RESPOSTA

Reis
gnu_reis

(usa Slackware)

Enviado em 03/12/2015 - 21:18h

Saudações MattF!

Não sei se você consultou as manpages, mas a função popen aceita somente dois argumentos (error: too many arguments to function ‘popen’). Sempre leve em consideração essa consulta.

Uma solução para esse problema, seguindo o raciocínio do código, seria compor o comando antes de chamar popen, segue:

int main(int argc, char *argv[]){
FILE* f;
char line[130];
char cmd[128];

sprintf(cmd,"ls /root/%s",argv[1]);

f=popen(cmd, "r"); //isso aqui funciona
while(fgets(line, sizeof line, f)){
printf("%s", line);
}
printf("\n %s\n", cmd);
pclose(f);
return 0;
}


Existem várias maneiras de resolver um problema a questão é conhecer os recursos da linguagem.
O material indicado pelo uilianries é muito bom, analise.

3. Re: Chamar um script passando argumentos e alocando sua saída (em C) [RESOLVIDO]





Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts