В стандарте C имеется ряд (примерно 20) заголовочных файлов, и unistd не является одним из них (это заголовок POSIX / UNIX95 / UNIX98). Таким образом, поставщик не обязан предоставлять его. Ни C89, ни C99 не имеют unistd как один из обязательных заголовочных файлов.
Самый простой способ обрезать файл - это снова открыть его в режиме записи (при условии, что у вас есть имя файла).
fclose (fh);
fh = fopen ("file_name", "w");
Если у вас есть только дескриптор файла, вам нужно использовать freopen()
. Вы получите EINVAL
, только если режим неправильный. Вы не можете изменить режим, кроме как в соответствии со следующей таблицей:
r -> r
w a -> a w
r+ w+ a+ -> any mode
Подробнее см. man freopen .