Открытый поток позволяет либо что-то прочитать из него, либо что-то записать в него.
Открытый поток может быть и файл и устройство и стандартный поток.
Если функция будет что-то выводить в поток, то ей все равно будет ли это файл, или терминал или устройство. Поэтому вдруг кому-то нужно вывести информацию на экран или в лог-файл, а куда именно - передал дескриптор потока и все.