Autor Tópico: Problemas com system() en c++  (Lida 11346 vezes)

Offline Diego_Rocha

  • Usuário Ubuntu
  • *
  • Mensagens: 372
  • Slackware current
    • Ver perfil
Problemas com system() en c++
« Online: 02 de MAR?O de 2007, 16:40 »
E ai pessoal estou com o seguinte problema, sou novato em c++, e fiz um programinha bem bestinha :D so por questão de praticar mesmo, so que me encontro com o seguinte problema vou postar o codigo para voces verem ok

Código: [Selecionar]
#include <iostream>
#include <string.h>
using namespace std;
struct miso
{
char local[100];
char iso[100];
char comando[250];
int TAM;
};
int monta(struct miso mont)
{
char destino[10]="/mnt/miso";
mont.TAM=100;
system("clear");
cout <<"\nDigite o caminho da imagem(ex: /home/user )";
cout <<"\n--> ";
cin.getline(mont.local,mont.TAM);
cout <<"\n\nDigite o nome da iso(ex: nome_iso.iso)";
cout <<"\n--> ";
cin.getline(mont.iso,mont.TAM);
cout <<"\n\nAguarde montando iso\n";
strcat(mont.local, "/");
strcat(mont.local,mont.iso);
strcat(mont.comando,"sudo mount -t iso9660 -o loop ");
strcat(mont.comando,mont.local);
strcat(mont.comando," ");
strcat(mont.comando,destino);
system(mont.comando);
}
int desmonta(struct miso desmont)
{
system("sudo umount /mnt/miso");
monta(desmont);
}
int sair()
{
return 0;
}
int monta();
int desmonta();
int sair();
int main()
{
miso o_miso;
cout <<"\nCriando diretorio miso!";
if (system("sudo mkdir /mnt/miso") != -1)
{
cout <<"\nDiretorio criado com sucesso!";
desmonta(o_miso);
}
else
{
cout <<"\nErro ao criar diretorio!";
sair();
}
}

na hora de executar o system(mont.comando); da erro diz que o comando sudo não existe ja tirei o sudo deixei so mount mas diz tbm que o mount nao existe como posso resolver isso obrigado

Offline solanoalves

  • Usuário Ubuntu
  • *
  • Mensagens: 398
  • Arch Linux
    • Ver perfil
Re: Problemas com system() en c++
« Resposta #1 Online: 02 de MAR?O de 2007, 16:59 »
tente adicionar a biblioteca <stdlib.h>

nao sei se ajuda mas ta ae

Offline Diego_Rocha

  • Usuário Ubuntu
  • *
  • Mensagens: 372
  • Slackware current
    • Ver perfil
Re: Problemas com system() en c++
« Resposta #2 Online: 02 de MAR?O de 2007, 17:02 »
tente adicionar a biblioteca <stdlib.h>

nao sei se ajuda mas ta ae

Não funcionou cara, continua dando esse erro

Citar
sh: mount: command not found

Valeu cara,

Offline solanoalves

  • Usuário Ubuntu
  • *
  • Mensagens: 398
  • Arch Linux
    • Ver perfil
Re: Problemas com system() en c++
« Resposta #3 Online: 02 de MAR?O de 2007, 18:57 »
tente dar um

Código: [Selecionar]
sudo apt-get install mount

Offline Diego_Rocha

  • Usuário Ubuntu
  • *
  • Mensagens: 372
  • Slackware current
    • Ver perfil
Re: Problemas com system() en c++
« Resposta #4 Online: 02 de MAR?O de 2007, 19:04 »
Meu mount funciona normal, isso que to achando estranho acho que na concatenação das strings esta havendo algum equivoco, eu imprimo a mont.comando na tela e esta perfeito so que na hora do system da erro não sei o que é estou pesquisando agora um outro metedo de concatenar pra ver se resolve isso valeu t++

Offline solanoalves

  • Usuário Ubuntu
  • *
  • Mensagens: 398
  • Arch Linux
    • Ver perfil
Re: Problemas com system() en c++
« Resposta #5 Online: 02 de MAR?O de 2007, 19:22 »
tente sprintf(variavel,"%s %s",caminho,destino);

eu programo em C mas acho q deve ter essa função ai

Offline Diego_Rocha

  • Usuário Ubuntu
  • *
  • Mensagens: 372
  • Slackware current
    • Ver perfil
Re: Problemas com system() en c++
« Resposta #6 Online: 02 de MAR?O de 2007, 19:29 »
O modo que faço ate funciona na hora de concatenar, quando imprimo a variavel mont.comando na tela me mostra perfeito, so que na hora que uso o system ele não vai, t++

Offline solanoalves

  • Usuário Ubuntu
  • *
  • Mensagens: 398
  • Arch Linux
    • Ver perfil
Re: Problemas com system() en c++
« Resposta #7 Online: 02 de MAR?O de 2007, 19:38 »
tenta usar o comando sprintf e retorna ai como ficou....

você poderia usar ponteiros para char ao invés de vetores. pode estar ai o problema também.

eu fiz um programa usando o system com variaveis ponteiros para char e usando a função sprintf para juntar as strings em uma unica variavel

Offline solanoalves

  • Usuário Ubuntu
  • *
  • Mensagens: 398
  • Arch Linux
    • Ver perfil
Re: Problemas com system() en c++
« Resposta #8 Online: 02 de MAR?O de 2007, 19:42 »
Olhe como ficou :



Código: [Selecionar]
    char *temp,*temp2;
    char comando[100];
    temp = (char *)malloc(sizeof(char )*100);
    temp2 = (char *)malloc(sizeof(char )*45);
    temp = "sudo apt-get install";
    temp2 = (char *)argv[2];
    sprintf(comando, "%s %s",temp,temp2);
    system(comando);

Offline Diego_Rocha

  • Usuário Ubuntu
  • *
  • Mensagens: 372
  • Slackware current
    • Ver perfil
Re: Problemas com system() en c++
« Resposta #9 Online: 02 de MAR?O de 2007, 19:55 »
Vou testar isso agora, mas continuo querendo saber porque quando imprimo o mont.comando aparece perfeito o comando so que quando coloca ele no system() da erro o0; sera que não é possivel fazer isso utilizando so c++ sem ter que implementar com c?? muito obrigado solano vou testar isso agora ate ++

Offline Khoala

  • Usuário Ubuntu
  • *
  • Mensagens: 61
    • Ver perfil
Re: Problemas com system() en c++
« Resposta #10 Online: 02 de MAR?O de 2007, 23:00 »
Da uma olhada aqui isso pode te ajudar

http://www.cplusplus.com/reference/string/string/operator+=.html



Desculpe falha de memória esqueci de colocar o link
« Última modificação: 02 de MAR?O de 2007, 23:05 por Khoala »

Offline Diego_Rocha

  • Usuário Ubuntu
  • *
  • Mensagens: 372
  • Slackware current
    • Ver perfil
Re: Problemas com system() en c++
« Resposta #11 Online: 02 de MAR?O de 2007, 23:04 »
Da uma olhada aqui isso pode te ajudar

Acho que voce esqueceu de postar o link  ;D ;D

Offline Khoala

  • Usuário Ubuntu
  • *
  • Mensagens: 61
    • Ver perfil
Re: Problemas com system() en c++
« Resposta #12 Online: 03 de MAR?O de 2007, 00:25 »
Já viu se funcionou??

Offline Diego_Rocha

  • Usuário Ubuntu
  • *
  • Mensagens: 372
  • Slackware current
    • Ver perfil
Re: Problemas com system() en c++
« Resposta #13 Online: 03 de MAR?O de 2007, 00:39 »
Já viu se funcionou??

Concatena legal igual o strcat so que fica mais legivel +=; porem continua dando erro no system() não sei o que pode ser amanha vou testar ele em c para ver se vai obrigado t++

Offline Diego_Rocha

  • Usuário Ubuntu
  • *
  • Mensagens: 372
  • Slackware current
    • Ver perfil
Re: Problemas com system() en c++
« Resposta #14 Online: 03 de MAR?O de 2007, 13:12 »
Ai pessoal achei a solução, mudei para c o codigo e funcionou normal perfeito, vou postar o codigo em c ainda esta bem mau feito pois fiz so para testar mesmo, esse programa não tem utilidade nenhuma foi feito so para praticar mesmo, ai vai o codigo e obrigado a todos que tentaram me ajudar mais acho que vou mudar o rumo dos meus estudos e me dedicar ao c inves c++,  ;D

*ai solano ficou exatamente como vc disse valeu;

Código: [Selecionar]
#include <stdio.h>
#include <stdlib.h>
int main()
{
char local[100];
char iso[100];
char comando[100];
char destino[10]="/mnt/miso";
char *temp;
char cmd[200];
system("clear");
printf("\nDigite o caminho da imagem(ex: /home/user )");
scanf("%s",&local);
printf("\nDigite o nome da iso(ex: arquivo.iso)");
scanf("%s",&iso);
temp =(char *)malloc(sizeof(char )*200);
temp ="mount -t iso9660 -o loop ";
sprintf(cmd, "%s %s/%s %s",temp, local, iso,destino);
system(cmd);
return 0;
}