Linux не использует "имена файлов Unicode" как таковые. Все имена файлов - это просто случайные последовательности 8-битных символов для ядра.
Могут случиться плохие вещи, например, пользователь может написать файл и затем изменить свою локаль, оставив свое имя файла в кодировке в предыдущей локали. Поэтому, если вы берете имя файла в качестве ввода, вам нужно сохранить точную 8-битную последовательность байтов, переданную вам в main (). Если вам нужно показать его пользователю, попробуйте интерпретировать его в кодировке текущей локали и преобразовать в ваш любимый тип Unicode.
Во многих современных системах Linux кодировка будет UTF-8, поэтому в целом это будет работать нормально.