OW>в последний рабочий день недели пришла в голову задача:
голова должна задачи решать, а не придумывать
OW>как программно узнать был ли вывод программы перенаправлен в файл?
GetFileType(GetStdHandle(STD_OUTPUT_HANDLE))
?
Здравствуйте, oli.wan, Вы писали:
OW>в последний рабочий день недели пришла в голову задача:
OW>как программно узнать был ли вывод программы перенаправлен в файл?
Для мака (возможно и для других никсов) это делается так:
#include <sys/fcntl.h>
#include <cstdio>
int main(int argc, char *argv[])
{
char buf[4096];
for(int i = 0; i < 3; ++i) {
int status = fcntl(i, F_GETPATH, buf);
fprintf(stderr, "descriptor: %d path: %s\n", i, buf);
}
return 0;
}
Для проверки:
mac106:tmp sergey$ g++ test.cpp && ./a.out
descriptor: 0 path: /dev/ttys001
descriptor: 1 path: /dev/ttys001
descriptor: 2 path: /dev/ttys001
mac106:tmp sergey$ g++ test.cpp && ./a.out 1>/tmp/foo.txt
descriptor: 0 path: /dev/ttys001
descriptor: 1 path: /private/tmp/foo.txt
descriptor: 2 path: /dev/ttys001
mac106:tmp sergey$