web-dev-qa-db-fra.com

Comment envoyer des commandes au terminal et recevoir des données de celui-ci?

Linux, Qt Creator. J'ai lancé ceci dans un débogueur:

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

Ça marche. Cependant, aucun terminal n'apparaît lorsque je double-clique sur l'exécutable (Windows le fait contrairement à Linux). Je suppose que je dois en créer un. Par exemple, comme ceci:

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

Maintenant, j'ai besoin de communiquer avec elle. Comment? Je vous remercie.

2
Kosarar

J'ai créé un programme en invoquant un programme en invoquant un programme. La ligne clé dans le premier est:

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);
1
Kosarar

Windows fait la distinction entre les exécutables "console uniquement" et les exécutables graphiques et si vous démarrez l'un des précédents, la console s'ouvrira pour vous.

Linux n'a pas cette distinction - tous les exécutables sont à peu près les mêmes. Si vous essayez de démarrer un depuis un gestionnaire de fichiers (en double-cliquant), essayez de lire à partir de l’entrée standard, recevez la marque EOF (car le programme n’est attaché à aucun terminal ) et quitter.

Certains gestionnaires de fichiers peuvent vous proposer l'option "Exécuter dans un terminal". Je ne sais pas si votre gestionnaire de fichiers peut être configuré pour le faire.

0
sмurf