Maison >développement back-end >Golang >Comment faire croire à un programme qu'il s'exécute dans un terminal ?

Comment faire croire à un programme qu'il s'exécute dans un terminal ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-29 12:44:09245parcourir

How to Make a Program Think It's Running in a Terminal?

Comment émuler un TTY pour un programme

Lorsqu'un programme interagit avec stdin, il peut se comporter différemment selon qu'il s'agit ou non d'un terminal ou un tuyau. Pour surmonter ce problème, vous pouvez utiliser une technique appelée émulation de « pseudoterminal » (Pty) pour faire apparaître votre programme comme un TTY.

Une implémentation est fournie dans le code C ci-dessous, en utilisant la fonction forkpty. Ce code configure un pseudoterminal, crée un processus enfant pour exécuter la commande souhaitée et transmet en permanence sa sortie à la sortie standard.

#include <signal.h>
#include <stdlib.h>
#include <sysexits.h>
#include <unistd.h>
#include <util.h>

pid_t child = 0;

void sighandler(int signum) {
  if (child > 0) {
    killpg(child, signum);
    exit(signum);
  }
}

int main(int argc, char *argv[]) {
  if (argc  0 && FD_ISSET(master, &fds)) {
      bytes_read = read(master, buf, buf_size);
      if (bytes_read <p>En intégrant cette technique, votre programme peut interagir efficacement avec d'autres applications comme s'il fonctionnaient via un terminal.</p></util.h></unistd.h></sysexits.h></stdlib.h></signal.h>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn