• [^] # Re: Variable COLUMS

    Posté par (site web personnel) . En réponse au message Taille définie du terminal pour une commande donnée. Évalué à 4.

    Tu peux t'en rendre compte toi-même en comparant un strace (avec les bonnes options) sur ls et sur ls|cat :

    15427 ioctl(1, TCGETS, {c_iflags=0x4500, c_oflags=0x5, c_cflags=0xbf, c_lflags=0x8a3b, c_line=0, c_cc="\x03\x1c\x7f\x15\x04\x00\x01\x00\x11\x13\x1a\x00\x12\x0f\x17\x16\x00\x00\x00"}) = 0
    15427 ioctl(1, TIOCGWINSZ, {ws_row=64, ws_col=238, ws_xpixel=0, ws_ypixel=0}) = 0
    

    quand on a affaire à un TTY, et :

    15431 ioctl(1, TCGETS, 0x7ffcc2edfff0) = -1 ENOTTY (Inappropriate ioctl for device)
    15431 ioctl(1, TIOCGWINSZ, 0x7ffcc2ee00a0) = -1 ENOTTY (Inappropriate ioctl for device)
    

    quand ça n'est pas le cas.

    Plus d'infos dans tty_ioctl(4).

    Note to self: En vérifiant la référence, je découvre avec amusement que la structure winsize possède deux champs inutilisés :

    struct winsize {
     unsigned short ws_row;
     unsigned short ws_col;
     unsigned short ws_xpixel; /* unused */
     unsigned short ws_ypixel; /* unused */
    };

    Debian Consultant @ DEBAMAX