Usando funções do sistema em C com "system"

Publicado por Perfil removido em 11/05/2005

[ Hits: 59.266 ]

 


Usando funções do sistema em C com "system"



Se você está programando em C em ambiente Linux e deseja usar alguma função do sistema, esta dica será bastante útil. Primeiramente funções do sistema são quaisquer funções que o sistema execute como, por exemplo, aquelas conhecidas que você utiliza enquanto está no console como "cat" (imprime um arquivo na tela), "ls" (lista os arquivos e diretórios do diretório), "mkdir" (cria um diretório), etc...

Primeiramente você deve declarar a biblioteca "stdlib.h", da qual faz parte a função que usaremos:

#include<stdlib.h>

A partir de então você já estará apto a utilizar no seu programa as funções desta biblioteca. A função em questão é a system que deve ser usada da seguinte forma:

(...)

system("função_do_sistema");

(...)

Logicamente a função deve ser usada dentro de um código para uma finalidade, seja ela qual for, sendo assim, no exemplo os "(...)" significam o desenvolvimento do seu programa.

Essa função se torna bastante útil, oferecendo ao programador a possibilidade de imprimir arquivos na tela, abrir programas e fazer inúmeras outras coisas de dentro do seu programa. Você pode ainda chamar o seu próprio programa de dentro dele mesmo trabalhando, assim, recursivamente.

O próximo exemplo é um código completo demonstrando uma aplicação funcional da função:

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

int main(void)
{
   /*aqui você pode mostrar ao usuário diversas opções relacionadas a números*/
   int N;
   scanf("%d",&N);

   if(N==1){
      system("reboot"); /*se o usuário tiver digitado 1 o sistema irá reiniciar*/
   }
   else{
      if(N==2){
      system("halt"); /* caso o usuário digitar 2 o sistema finalizará*/
      }
      else{
         printf("Opção inválida");
      }
   }
}

O código acima pode ser compilado através da linha de comando:

$ gcc nome_do_arquivo.c -o nome_de_saída
ou
$ g++ nome_do_arquivo.cpp -o nome_de_saída

Deixarei a seu critério o nome a ser salvo ou a extensão podendo ser ela .c ou .cpp.

Agora fica por conta de sua imaginação e criatividade. Pode se divertir programando e usando diversas funções do sistema. Espero que tenham gostado da minha primeira dica no VOL.

Suas dicas e críticas para eu melhorar serão bastante importantes. Qualquer dúvida escrevam me escrevam aqui mesmo no VOL.

Outras dicas deste autor

Fazendo o scanner GOTEC funcionar no SuSE 10.1

Facilite a navegação pelo Konsole

Atualizando o Ubuntu Server 7.04 para 7.10 Gutsy Gibbon

O comando paste

Desabilitando modo "offline" no Firefox 3.x

Leitura recomendada

Movendo o cursor em C usando Console Escape Sequence

C/C++ no modo Hard

Autoestudo e certificação C/C++

Limpando a tela sem NCURSES ou clrsrc() - DOS

Baixe de graça alguns livros do O'Reilly

  

Comentários
[1] Comentário enviado por removido em 02/04/2006 - 09:38h

Hey, é possível passar argumentos?

Tipo:
scanf("%c", &argumento ); ( a sintaxe tá errada, mas deixa )
system("ls %c", argumento );

Eu não testei isso pra ver se funciona ainda.

[2] Comentário enviado por albertguedes em 11/09/2006 - 15:48h

Este é o poder do C, I like it !!!

[3] Comentário enviado por daemonio em 02/01/2007 - 13:44h

Netwarrior, você pode ustilizar sprintf() antes de system();

char argumento[10],comando[50] ;
scanf("%s",argumento) ;
sprintf(comando,"ls %s",argumento) ;
/* Ai executa */
system(comando) ;

Bem, voce tambem pode abrir um pipe com a funcao popen() mas aí já é outra história.

[4] Comentário enviado por paulocamboim em 03/05/2007 - 14:19h

Dessa forma eu posso utilizar qq comando q eu rode no modo texto?

por exemplo, se quero q o meu programa rode determinado programa q nao faz parte dos comandos basicos do linux e retornar algo ..

vlw.

[5] Comentário enviado por f_Candido em 22/09/2007 - 21:30h

Valeu pela dica. Pensava que a system();, só se usava no Ambiente no Windows...
Muito Obrigado pela Dica,
Abraços

[6] Comentário enviado por eltonhbm em 17/09/2009 - 00:50h

eu pensava exatamente com o amigo f_Candido
obrigado pela dica
vlw! xD

[7] Comentário enviado por andrezc em 15/12/2010 - 10:04h

Uma POG autêntica.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts