Como enviar comandos para o terminal e receber dados dele?

2

Linux, Qt Creator. Eu corri isso em um depurador:

#include <stdio.h>
char p[1000];
int main()
{
    scanf("%s",p);
    return 0;
} 

Funciona. No entanto, nenhum terminal aparece quando clico duas vezes no executável (o Windows faz isso em contraste com o Linux). Eu suponho que preciso criar um. Por exemplo, assim:

system("/usr/bin/x-terminal-emulator");

Agora eu preciso me comunicar com isso. Como? Obrigado.

    
por Kosarar 18.01.2017 / 05:01

2 respostas

1

Eu criei um programa invocando um programa invocando um programa. A linha chave no primeiro é:

execl("/usr/bin/x-terminal-emulator", "/usr/bin/x-terminal-emulator",
        "-e", "/home/kkk/build-untitled-Desktop-Debug/untitled",
        "/home/kkk/Downloads/1.pdf", (char*) NULL);
    
por Kosarar 20.01.2017 / 02:40
0

O Windows distingue os executáveis "somente de console" e os executáveis de GUI e, se você iniciar um deles, ele abrirá o console para você.

O Linux não tem essa distinção - todos os executáveis são praticamente os mesmos. Se você tentar iniciar um a partir de um gerenciador de arquivos (onde você clica duas vezes), ele será executado, tente ler a entrada padrão, receba a marca EOF (porque o programa não está conectado a nenhum terminal) e saia.

Alguns gerenciadores de arquivos podem oferecer a opção "Executar no Terminal". Se o seu gerenciador de arquivos pode ser configurado para isso, eu não sei.

    
por sмurf 18.01.2017 / 06:03