falha de segmentação [resolvido]

Iniciado por woises, 27 de Dezembro de 2007, 22:16

tópico anterior - próximo tópico

woises

Pessoal,

estou fazendo um programinha em c++ que acessa a porta paralela, o programa compila normal com  "sudo g++ -v -oacessoLPT acessoLPT.cpp", o problema é que quando eu vou executa-lo aparece a seguinte mensagem de erro "falha de segmentação(core dumped)", procurei no google e não achei nada satisfatorio(sempre dizem que he um erro generico).

segue o programa:

#include <sys/io.h>
#include <iostream.h>
#include <unistd.h>

//using namespace std;
int main(){
   
   if(ioperm(0x378,0,1)){
      //unsigned char valor = 11111111;
      outb(255, 0x378);
}


Alguem tem alguma sugestão??/
Se você almeja a paz, então prepare-se para a guerra!

Darcamo

Acontece que falha de segmentação realmente é um erro genérico. Pode ser muita coisa.

Em geral, isso ocorre quando você acessa uma região de memória que não deve. O exemplo mais básico é tentar acessar um elemento fora to tamanho de um vetor.

O jeito para descobrir a causa de uma falha de segmentação é rodar o programa do debug. Quando o programa der o erro e sair, você poderá saber que linha causou a falha de segmentação. No caso do seu programa foi a linha
outb(255, 0x378);

Não sei muito sobre como usar a porta paralela, e como usar a função outb. Talvez a sua porta paralela não seja 0x378 ou você não possa enviar nada para ela (ao menos não com a função outb).

Procura mais informações sobre essa função outb e se tem que fazer alguma coisa para usá-la (liberar alguma permissão para que seu usuário possa acessar diretamente a porta paralela, se tem que fazer algum tipo de inicialização, etc). Ou então procura alguma biblioteca para trabalhar com a porta paralela de maneira mais fácil.


Outra coisa, <iostream.h> é deprecated. Use apenas <iostream> no lugar.

woises

Resolvido....
vlw Darcamo..

Na verdade o erro não estava na função outb() e sim na ioperm() pois ela é que fornece a permissão para acesso a porta e eu descobri (só não entendi o pq) que ela não estava dando, então eu simplesmente retirei ela.
Muito estranho pq esse mesmo erro esta dando no mp3blaster, será alguma inconsistência da nova versão do ubuntu???
Se você almeja a paz, então prepare-se para a guerra!