É possível determinar se um descritor de arquivo se refere a um tty.
Confira a função isatty
.
Alternativamente, você pode usar a função fstat
que lhe oferece um pedaço de informação no arquivo.
Até recentemente, fiquei com a impressão de que os programas Unix-y não sabiam de onde sua saída ia, seja como padrão, redirecionada para um arquivo ou para um pipe. No entanto, uma pergunta não relacionada sobre U & L neste site trouxe à minha atenção o seguinte exemplo:
% echo "hello world" > file
% grep --color=auto lo file
hello world
% grep --color=auto lo file | cat
hello world
Obviamente, você não pode vê-lo aqui, mas o primeiro comando mostra 'lo' realçado, como esperado. No entanto, a segunda chamada, que passa por um pipe, não mostra cor. Isso sugere que grep
estava ciente de que sua saída era direcionada para um tubo e evitava a emissão de cores. Como isso é feito?
É possível determinar se um descritor de arquivo se refere a um tty.
Confira a função isatty
.
Alternativamente, você pode usar a função fstat
que lhe oferece um pedaço de informação no arquivo.
Sim, eles são. Existem vários métodos para determinar onde a saída está indo. Para uma comparação veja minha resposta para uma questão relacionada no stackoverflow .
Facilmente. Diferentes maneiras podem ser usadas para determinar onde a saída está indo. Então, em python você poderia fazer algo parecido com
/* CODE. Input will be parsed and executed */
int
PyRun_AnyFileExFlags(FILE *fp, const char *filename, int closeit,
PyCompilerFlags *flags)
{
if (filename == NULL)
filename = "???";
if (Py_FdIsInteractive(fp, filename)) {
int err = PyRun_InteractiveLoopFlags(fp, filename, flags);