Да. Используйте stat()
. См. страницу справочника для stat(2)
.
stat()
перестанет работать, если файл не будет существовать, иначе скорее всего, успешно выполняться. Если это действительно будет существовать, но у Вас нет доступа для чтения к каталогу, где это существует, то это также перестанет работать, но в этом случае какой-либо метод перестанет работать (как можно осмотреть содержание каталога, который Вы не можете видеть согласно правам доступа? Просто, Вы не можете).
, О, поскольку кто-то еще упомянул, можно также использовать access()
. Однако я предпочитаю stat()
, как будто файл существует, это сразу получит меня большая полезная информация (когда было это последнее обновление, насколько большой это, владелец и/или группа, которая владеет файлом, правами доступа, и так далее).
Единственное, что вам нужно от представления nil
, - это иметь возможность идентифицировать его - написать какой-нибудь предикат null?
, который возвращает «истина» для nil
и «false» для всех остальных пар. Это означает, что ответ зависит от вашего представления истинного / ложного. При обычном выборе λxy.x
и λxy.y
удобной кодировкой для nil
будет λf. [True]
. Теперь преобразовать это в SKI очень просто (и я не буду делать это здесь, так как это выглядит как домашнее задание ...).
(Кроме того, реализация предиката null?
с таким представлением для nil
- хорошее упражнение.)