Я полагаю, у вас есть что-то подобное в вашей программе (вы можете воспроизвести это для ваших тестов, я называю это isatty
здесь)
#include <stdio.h>
#include <unistd.h>
const char* m1 = "%d: %s a TTY\n";
void isTty(FILE* f) {
int fno = fileno(f);
printf(m1, fno, (isatty(fno)) ? "is" : "is NOT");
}
int main(int argc, char* argv[]) {
isTty(stdin);
isTty(stdout);
}
например, если вы запустите его
$ ./isatty
0: is a TTY
1: is a TTY
$ ./isatty > isatty.out
$ cat isatty.out
0: is a TTY
1: is NOT a TTY
$ ./isatty > isatty.out < /dev/null
$ cat isatty.out
0: is NOT a TTY
1: is NOT a TTY
Теперь, если вы создаете expect
скрипт isatty.expect
(установите expect
для вашего дистрибутива, если не установлен)
#! /usr/bin/expect -f
spawn "./isatty"
expect
и запустите
$ ./isatty.expect
spawn ./isatty
0: is a TTY
1: is a TTY
или
$ ./isatty.expect > isatty.out
$ cat isatty.out
spawn ./isatty
0: is a TTY
1: is a TTY