Cómo diferenciar entre stin y pipe interactivos.

Hasta ahora, tengo que si el argumento de nombre de archivo ( fname ) se deja vacío, el progtwig lee stdin automáticamente.

 if (!strcmp(fname, "")) fin = stdin; 

Pero necesito saber si esa stdin fue incorporada o interactiva, porque posiblemente podría obtener algo como:

 rsm: reading from (stdin) ^Z rsm:(stdin):1: not an attribute: `√┘2ç∩' 

si se utilizó entrada interactiva. ¿Hay algún tipo de función de biblioteca que pueda usar?

En los sistemas Posix, puedes usar isatty :

 #include  #include  if (isatty(STDIN_FILENO)) { // interactive stdin } 

En Windows, puede utilizar la función correspondiente _isatty .