Comandos do Sistema [RESOLVIDO]

1. Comandos do Sistema [RESOLVIDO]

Varatar
Varatar

(usa Slackware)

Enviado em 04/11/2005 - 20:58h

Oba, pessoal
Como é que eu consigo chamar comandos do sistema em C? (os mais básicos mesmos, tipo cat, grep, ler o conteúdo de variáveis de ambiente, etc)
Que bibliotecas eu devo importar ... ?
Queria gerar um binário com as mesmas instruções que usaria no shell, ou num script ... mas não sei como deve ser o código fonte .. valew.


  


2. MELHOR RESPOSTA

João Marcos Menezes
stremer

(usa Arch Linux)

Enviado em 16/05/2008 - 10:21h

slackware_10, cuidado, seu código pode possibilitar buffer overflow.
Sempre prefira o fgets ao gets, pois controla a entrada de buffer.
E alem disso o fgets ja coloca o byte 0 no final da string.
Ficaria assim.
PS: Critica construtiva ok, eu tbem erro muito pois trabalho 90% do tempo com java e acabo ficando burrão em C volta e meia.

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

int main(void){
char var[100];

// Se nao deixarmos 1 byte a mais podemos ter
// problemas ou o char zero será armazenado em um
// lugar que pode estar em uso causando problemas
// intermitentes

char ip[16];
printf("IP: ");
__fpurge(stdin);
fgets(ip, 16, stdin);

// Nao se esqueca que o enter deve ser removido
ip[strlen(ip)] = 0;

memset(var, 0x0, 100);
sprintf(var, "ping %s", ip);
system(var);
return 0;
}


3. Re: Comandos do Sistema [RESOLVIDO]

Pablo Albert
albert

(usa Slackware)

Enviado em 07/11/2005 - 12:58h

A funcao system() da biblioteca stdlib.h executa comandos do terminal. Basta colocar o comando como string. Por exemplo:
-------------------------
#include <stdio.h>
#include <stdlib.h>
main()
{
system("ls -l");
}
-------------------------
Compilando e executando o arquivo gerado, o comando ls -l eh executado.


4. Re: Comandos do Sistema [RESOLVIDO]

Diego da Silva de Medeiros
diegotosco

(usa Slackware)

Enviado em 07/11/2005 - 22:39h

Essa função é muito massa, dá pra botar até comandos com redirecionamento e pipes, muito legal.


5. certo

Diego J. Hoss
piazinhodolinux

(usa Suse)

Enviado em 29/12/2005 - 20:37h

segundo Albert, o melhor jeito é esso mesmo, mas naum esqueça, se vc usa o turbo, esse comando não funciona, so com o DEV...

Abraços!


6. Função System em C

Suender Batista de Oliveira
suender

(usa Nenhuma)

Enviado em 25/07/2006 - 09:27h

Senhores(as),

Gostaria de saber como posso passar um valor para a função system que vem de uma variável.

Ex.:
char var;
var="200.200.200.200";

system("ping %c",var);


Alguém pode me ajudar?

[email protected]


7. Re: Comandos do Sistema [RESOLVIDO]

Ricardo Rodrigues Lucca
jllucca

(usa Gentoo)

Enviado em 25/07/2006 - 09:34h

Da uma procurada sobre snprintf, ela eh uma variante do sprintf, mas limitando o tamanho da string.


8. suender

Enzo de Brito Ferber
EnzoFerber

(usa FreeBSD)

Enviado em 25/07/2006 - 12:08h

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

int main(void){
char var[100];
char ip[15];
printf("IP: "); __fpurge(stdin); gets(ip);
memset(var, 0x0, 100);
sprintf(var, "ping %s", var);
system(var);
return 0;
}



9. Retorno da Função System

Célio de Jesus Santos
celiojs

(usa Suse)

Enviado em 16/05/2008 - 01:02h

Pessoal,
Vocês sabem me dizer como pegar o retorno desta função e armazenar em uma variável?

Obrigado.
Célio


10. Re: Comandos do Sistema [RESOLVIDO]

Geraldo José Ferreira Chagas Júnior
gjr_rj

(usa Debian)

Enviado em 16/05/2008 - 10:56h

Teria alguma outra função que invés de imprimir a saída no terminal retorne a saída para uma variável?



11. system em uma variável

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 19/05/2008 - 10:26h

Oi Geraldo (grj_rj).

Sobre colocar o system em uma variável, respondi esta dúvida e disponibilizei até código fonte.

Para não ser repetitivo, tudo está aqui neste tópico:
http://www.vivaolinux.com.br/comunidades/verTopico.php?codigo=13&codtopico=19687


12. Re: Comandos do Sistema [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 20/05/2008 - 15:21h

usa o system cara... as bibliotecas vc pode usa o stdio.h e stdlib.h

exemplo:

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

main () {
char ip[16];
char var[100];

printf("Entre com o numero do ip: ");
scanf("%s",&ip);


sprintf(var, "ping %s", ip);
system(var);

return 0;
}
Esse exemplo eu usei uma variavel dentro do system... que seria no caso o ip..
agora se você quiser usar apenas um comando... pode fazer assim:

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

main () {
system("ls -la");

return 0;
}

e assim vai indo... espero ter ajudado!



01 02