Ir para conteúdo
Fórum Script Brasil
  • 0

Abrir gedit por linha de comando em C


DiegoTvdi

Pergunta

Boa tarde!

Eu preciso chamar um arquivo, já existente no main() em C, para o qual abir o arquivo .txt, não abrir ele para leitura e sim como se fosse lá no arquivo e apertar abrir.

Há como fazer isso em C no linux.

Tem tentei system("caminho", txt), mas não deu certo.

Desde já obrigado.

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Você quer abrir o .txt pelo seu programa ou chamar realmente o gedit ou outro editor?

Se for a segunda opção, pode usar a função execve:

if(!fork()) { // novo processo
      execve("gedit", "arquivo.txt", NULL);
      return -1;
   }

No código acima é criado um novo processo e então chamado o execve.

A função execve não retorna se conseguir executar o programa passado como parâmetro. Por isso é que deve ser criado um novo processo pois assim o programa principal pode continuar funcionando normalmente.

Abraços,

Marcelo

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia! De nada! :)

O que não pegou? Não compilou? Ou não funcionou?

Mande o erro para que se possa entender exatamente o problema...

Sobre o uso de pipes: você diz que está usando pipes no seu programa? Ou está usando na linhade comando como "cat arquivo.txt | seuprograma" ?

No exemplo eu chamei o gedit passando como parâmetro arquivo.txt.

Abraços,

Marcelo

Link para o comentário
Compartilhar em outros sites

  • 0
Bom dia! De nada! :)

O que não pegou? Não compilou? Ou não funcionou?

Mande o erro para que se possa entender exatamente o problema...

Sobre o uso de pipes: você diz que está usando pipes no seu programa? Ou está usando na linhade comando como "cat arquivo.txt | seuprograma" ?

No exemplo eu chamei o gedit passando como parâmetro arquivo.txt.

Abraços,

Marcelo

Marcelo, eu tenho que envocar o arquivo neste trecho de código:

case 1:
    write(1,"Metodo Escolhido -> BubbleSort\n",32);
    //CriarThreads();
    bubbleSort(vetBubble,GERA);
    gravaInteiro(vetBubble,"Bubble.txt");
    if(!fork()) { // novo processo
          execve("gedit", "/home/diego/Documentos/Bubble.txt", NULL);
          return -1;
       }    
    
    break;

Ele executa tudo certinho, mas o arquivo txt não abre.

Valeu!

Abraço

Diego

Link para o comentário
Compartilhar em outros sites

  • 0

Ok, parece que está tudo certo.

Uma coisa que pode estar dando problema é que na linha de cima você cria o arquivo sem passar o caminho. Na linha de baixo existe o caminho completo. Pode ser que o arquivo esteja sendo gerado em um caminho diferente!

Pode ser também que seja necessário passar o caminho para o gedit. Rode na linha de comando:

which gedit

E use o caminho exibido no lugar de apenas gedit.

Antes do return -1 você pode colocar um printf também. Se o gedit foi chamado com sucesso, não pode executar aquela linha.

Abraços,

Marcelo

Link para o comentário
Compartilhar em outros sites

  • 0
Ok, parece que está tudo certo.

Uma coisa que pode estar dando problema é que na linha de cima você cria o arquivo sem passar o caminho. Na linha de baixo existe o caminho completo. Pode ser que o arquivo esteja sendo gerado em um caminho diferente!

Pode ser também que seja necessário passar o caminho para o gedit. Rode na linha de comando:

which gedit
E use o caminho exibido no lugar de apenas gedit. Antes do return -1 você pode colocar um printf também. Se o gedit foi chamado com sucesso, não pode executar aquela linha. Abraços, Marcelo
Marcelo, Olha o erro que tá dando agora:
** (gedit:2682): WARNING **: A conexão está fechada

(gedit:2682): EggSMClient-WARNING **: Failed to connect to the session manager: None of the authentication protocols specified are supported


** (gedit:2682): WARNING **: Could not connect to session bus

Agora ele tenta abrir e fala esse erro, eu já tentei como root, com tudo, mas não para de dar esse erro.

Obrigado.

Abraço.

Diego

Link para o comentário
Compartilhar em outros sites

  • 0

Parece algum problema para executar o gedit. Se você rodar o programa no console direto, não funciona mesmo, depende de algumas configurações. Se rodar em um terminal gráfico deveria rodar!

Onde você está rodando o programa?

Se você tentar rodar o gedit direto, sem ser pelo programa, funciona???

Abraços,

Marcelo Utikawa da Fonseca

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...