Справочник по консольным командам Toybox для Android 12


  Ver.0.8.4     Ver.0.8.9     Pending  

Путь: Toys/POSIX, команды версии: Ver.4     Ver.9


tee

Комментарии в файле tee.c :

usage: tee [-ai] [FILE...]

Скопируйте стандартный ввод в каждый из перечисленных файлов, а также в стандартный вывод. Имя файла "-" является синонимом стандартного вывода.
  • -a Добавить к файлам
  • -i Игнорировать SIGINT

  • usage: tee [-ai] [FILE...]

    Copy stdin to each listed file, and also to stdout. Filename "-" is a synonym for stdout.
  • -a Append to files
  • -i Ignore SIGINT

  • Исходный текст в файле tee.c

    #define FOR_tee
    #include "toys.h"
    
    GLOBALS(
      void *outputs;
      int out;
    )
    
    struct fd_list {
      struct fd_list *next;
      int fd;
    };
    
    // Open each output file, saving filehandles to a linked list.
    
    static void do_tee_open(int fd, char *name)
    {
      struct fd_list *temp;
    
      temp = xmalloc(sizeof(struct fd_list));
      temp->next = TT.outputs;
      if (1 == (temp->fd = fd)) TT.out++;
      TT.outputs = temp;
    }
    
    void tee_main(void)
    {
      struct fd_list *fdl;
      int len;
    
      if (FLAG(i)) xsignal(SIGINT, SIG_IGN);
    
      // Open output files (plus stdout if not already in output list)
      loopfiles_rw(toys.optargs,
        O_RDWR|O_CREAT|WARN_ONLY|(FLAG(a)?O_APPEND:O_TRUNC),
        0666, do_tee_open);
      if (!TT.out) do_tee_open(1, 0);
    
      // Read data from stdin, write to each output file.
      for (;;) {
        if (1>(len = xread(0, toybuf, sizeof(toybuf)))) break;
        for (fdl = TT.outputs; fdl;fdl = fdl->next)
          if (len != writeall(fdl->fd, toybuf, len)) toys.exitval = 1;
      }
    }