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

Publicado por Perfil removido em 11/05/2005

[ Hits: 59.250 ]

 


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

Modem PCTEL no kernel 2.6

Transferir arquivos via Arch Linux para Galaxy S8

Baixando o mirror da Ibiblio.org no Basic Linux

Exodus Desktop Beta

[MP-X e CELULAR] Organizando arquivos no Linux

Leitura recomendada

Exercícios em C

Microsoft Visual Studio Code no GNU/Linux

Lista de IDEs para Programação em Qualquer Distro

Programando em C/C++ no Eclipse

Lista de livros C++

  

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