печать UID файла в системе Linux - PullRequest
4 голосов
/ 06 июня 2010

Я учусь программированию. Я пытаюсь сделать свою собственную программу похожей на команду ls , но с меньшими параметрами структура (если это каталог).

После этого я использую stat (), чтобы получить всю информацию о файле, но вот моя проблема, когда я использую write (), чтобы напечатать эти значения, но когда я хочу напечатать их с помощью printf (), я получаю предупреждение: format «% ld» ожидает тип «long int», но аргумент 2 имеет тип «__uid_t». Я не знаю, что следует использовать вместо % ld , а также для других специальных типов данных.

Ответы [ 2 ]

9 голосов
/ 06 июня 2010

Не существует спецификатора формата для __uid_t, поскольку этот тип является системно-зависимым и не является частью стандарта C, и, следовательно, printf не знает об этом.

Обычный обходной путь - преобразовать его в тип, который будет соответствовать всему диапазону значений UID во всех системах, на которые вы ориентируетесь:

printf("%lu\n", (unsigned long int)uid); /* some systems support 32-bit UIDs */
1 голос
/ 06 июня 2010

Вы можете привести его к длинному целому:

printf("foobar: %ld\n", (long int)your_uid_t_variable);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...