1

est ici un peu de C-partout pour le frai et la communication avec des programmes terminaux sous Linux (et éventuellement d'autres unix)Comment implémenter un émulateur de terminal pour Windows?

int master, slave; 

struct winsize wsize = {24, 80, 0, 0}; // 24 rows and 80 columns 

if (openpty(&master, &slave, NULL, NULL, &wsize) < 0) 
    die("Failed to open the pty master/slave"); 

if (!fork()) { 
    // child, set session id and copy the pty slave to std{in,out,err} 
    setsid(); 
    dup2(slave, STDIN_FILENO); 
    dup2(slave, STDOUT_FILENO); 
    dup2(slave, STDERR_FILENO); 
    close(master); 
    close(slave); 
    // then use one of the exec* variants to start executing the terminal program 
} 

// parent, close the pty slave 
close(slave); 
// At this point, we can read/write data from/to the master fd, and to the child 
// process it would be the same as a user was interacting with the program 

Je comprends que les fenêtres n'ont pas fork() ou openpty(), donc ma question est: Comment atteindre quelque chose de similaire sur Windows?

Si possible, je voudrais voir le montant minimum de travail code C/C++ nécessaire pour effectuer les opérations suivantes:

  • Spawn une session interactive cmd.exe utilisant CreateProcess
  • obtenir un ensemble de gère/descripteurs de fichier qui peuvent être utilisés pour lire/écrire des données depuis/vers le processus engendré, de manière à simuler une session de console interactive.
+0

Je n'ai rien trouvé. Je ne comprends pas, comment ce problème est-il lié aux threads? –

+0

Quelle est la fonctionnalité de 'fork'? Pouvez-vous utiliser des threads au lieu d'un processus? –

+0

Non, la fourchette est là pour créer un nouveau processus, puis exécutez le programme terminal –

Répondre

0

La console Windows fonctionne très différemment de la console Linux. Il n'y a pas de console PTY ou de console virtuelle dans les fenêtres à générer ou se connecter. Vous travaillez essentiellement dans la console Windows elle-même.

Vous pouvez ensuite gérer tout ce que je/o votre auto pour émuler un terminal, en gardant la trace de la console en tant que votre fenêtre, x/position y coordonnées, couleurs, etc.

Vous pouvez regarder dans quelque chose comme PDCURSES pour Windows si vous êtes intéressé par les interfaces basées sur le texte.

Questions connexes