Jump to content
Fórum Script Brasil
  • 0

Abrir gedit por linha de comando em C


DiegoTvdi
 Share

Question

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 to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.8k
    • Total Posts
      648.8k
×
×
  • Create New...