У меня есть пути к файлу в одной стороне и их новые пути, где я хочу их дублировать.Как протестировать по двум путям сложно?
Как проверить, могут ли они быть просто привязаны или они должны быть скопированы?
У меня есть пути к файлу в одной стороне и их новые пути, где я хочу их дублировать.Как протестировать по двум путям сложно?
Как проверить, могут ли они быть просто привязаны или они должны быть скопированы?
Шаг 1: Позвоните link.
Шаг 2: Если он возвращает -1 с errno
, установленным на EXDEV
, затем сделайте копию.
[обновление]
В общем, нет портативных (и надежный) способ ответить на этот вопрос. Самое близкое, что вы можете получить, я думаю, это позвонить statvfs для источника и адресата, а затем сравнить поля f_fsid
statvfs structures.
К сожалению, POSIX ничего не гарантирует в частности о поле f_fsid
. Этот тест должен работать на Linux, если вы, возможно, не спрашиваете о файловых системах, монтируемых NFS ...
Nemo's answer действительно самое простое решение: попробуйте link(2)
syscall.
Если вы хотите узнать, не трудно ли установить путь, даже если вы не попытаетесь получить нулевой адрес link(2)
, вы можете найти их файловую систему, например. используя statfs(2), убедитесь, что они находятся в одной файловой системе и проверьте, что тип файловой системы достаточно хорош.
Но он создаст жесткую ссылку, и я не хочу этого делать - мне нужно только знать, можно ли это сделать. Также я говорю о командах оболочки :) – Zebooka