Uso da função system () no GNU/Linux [RESOLVIDO]

1. Uso da função system () no GNU/Linux [RESOLVIDO]

Jose Renan Assis
JoseRenan

(usa Ubuntu)

Enviado em 06/07/2011 - 21:05h

olá pessoal, fiz um programa em c++ no Code::Blocks no windows 7 e ele roda normalmente nessa plataforma, porém no Fedora Linux (Fedora 15), também no Code::Blocks na janela do programa aparece:

sh: color: comando não encontrado
sh: title: comando não encontrado

Uma desvantagem da função system(), é que ela não funciona em todos os sistemas operacionais.

Código:

#include <iostream>
#include <iomanip>
#include <cstdlib>
using namespace std;
int main ()
{
system ("color 80");
system ("title Cadastro de Pessoas");
char nome[31], end[26], sexo, sex1[10]="Masculino", sex2[9]="Feminino";
int idade;
cout<<"Nome: ";
cin.getline(nome,sizeof(nome));
cout<<"Endereco: ";
cin.getline(end,sizeof(end));
cout<<"Idade: ";
cin>>idade;
cout<<"Sexo (F ou M): ";
cin>>sexo;
system ("cls");
system ("color 75");
cout<<setfill('_');
cout<<"Nome:"<<setw(75)<<nome<<endl;
cout<<"Endereco:"<<setw(71)<<end<<endl;
cout<<"Idade:"<<setw(74)<<idade<<endl;
if (sexo!='F' && sexo!='M')
cout<<"\aOpcao invalida!\n";
else{
if (sexo=='F')
cout<<"Sexo:"<<setw(75)<<sex2<<endl;
else cout<<"Sexo:"<<setw(75)<<sex1<<endl;
}
return 0;
}

Então pergunto se há algum substituto para essa função em Linux e como usá-la.

Obs.: Outro dia foi publicado no VOL o script ( http://vivaolinux.com.br/script/Converter-graus-Celsius-em-Fahrenheit-e-viceversa) onde outros usuários notaram erros no programa (numa versão anterior à enviada) quando compilados em Linux, agradeço a eles e peço que se eu puder fazer melhorias no programa que falem, ok?


  


2. Re: Uso da função system () no GNU/Linux [RESOLVIDO]

Jose Renan Assis
JoseRenan

(usa Ubuntu)

Enviado em 06/07/2011 - 21:14h

Uma dica, se vc usa o Fedora tem que instalar alguns pacotes antes de instalar o code::blocks:

yum install make automake gcc gcc-c++ kernel-devel byacc


3. Re: Uso da função system () no GNU/Linux [RESOLVIDO]

Elder Marco
eldermarco

(usa Fedora)

Enviado em 06/07/2011 - 21:41h

Creio que você não entendeu o uso dessa função e o que ela faz. A função system é utilizada para executar comandos a partir do interpretador de comandos do usuário. Isso quer dizer que se você estiver no Windows, ela irá executar os comandos do prompt de comandos do Windows. Se estiver no Linux, ele irá executar comandos no interpretador de comandos do Linux.

Sendo assim, o comando "cls" existe no Windows e limpa a tela, mas no Linux, ele se chama "clear", o que significa que isso não irá funcionar.

É aí que entra a questão da portabilidade. Você pode utilizar diretivas do pré-processador para saber se você está compilando o programa em um sistema Windows ou Linux e então definir o comando de acordo. No entanto, eu sugiro que não use muito esse comando por não fazer muito sentido. Pelo menos o seu uso exagerado.


4. Re: Uso da função system () no GNU/Linux [RESOLVIDO]

Jose Renan Assis
JoseRenan

(usa Ubuntu)

Enviado em 06/07/2011 - 22:04h

obrigado pelas dicas, vou mexer no codigo para deixá-lo mais "limpo", inté! :)


5. Re: Uso da função system () no GNU/Linux [RESOLVIDO]

Jose Renan Assis
JoseRenan

(usa Ubuntu)

Enviado em 07/07/2011 - 08:04h

Entendi o uso do system agora, mas não entendi ainda ele ser uma "gambiarra", me passaram mais links em um grupo do google e vou dar uma olhada, queria fazer esse programa funcionar tão bem em Windows quanto em Linux .. inté


6. Re: Uso da função system () no GNU/Linux [RESOLVIDO]

André
andrezc

(usa Debian)

Enviado em 08/07/2011 - 09:22h

JoseRenan,

é uma gambiarra pois você está chamando um comando do sistema, ou melhor, um programa. Quando você chama o programa PAUSE do Windows, por exemplo, você está criando um novo processo. Com isso, já são 3 processos rodando. O MS-DOS (no caso do Windows), o seu programa, e o PAUSE. Outro problema é que seu código ficará dependente de plataforma, no caso, o Windows (ou Linux/Unix(like), se você usar comandos e/ou programas destes), e além disso, seu programa estará sujeito a vulnerabilidades.


7. Re: Uso da função system () no GNU/Linux [RESOLVIDO]

Jose Renan Assis
JoseRenan

(usa Ubuntu)

Enviado em 08/07/2011 - 10:15h

Entendo que devo evitar os systems por questões de portabilidade e segurança, só usei eles até agora pois sua aplicação é simples, no entanto como há formas de usar outras funções equivalentes vou deixá-las com maior prioridade antes de uma provável utilização do system.

Será que alguém poderia me adicionar no MSN para que eu possa consultar se me aparecer alguma dúvida?

jose_assis93ªymail.com






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts