我想知道在 linux 和 C 中是否可以发现我的程序输出被重定向到一个文件。我想在标准输出上打印输出时格式化人类可读的输出$ ./myprogram
,当它被重定向到文件时像 csv$ ./myprogram >> data.csv
有可能吗?
您可以使用该isatty
功能:
if (isatty(STDOUT_FILENO))
{
/* Standard out is an interactive terminal */
}
else
{
/* Standard out is something else (pipe, file redirect, etc.) */
}