Я пишу приложение для контроля версий.Теперь я хочу скопировать файлы с одного компьютера на другой по сети, используя сокеты BSD.Я также хочу НЕ следовать по символическим ссылкам, но скопировать саму ссылку на другой компьютер.Я немного застрял на этом.
Один из вариантов, о котором я думал, - это использование команды readlink()
, отправка данных на другую сторону машины и запись полученного содержимого в файл.Я даже не знаю, сработает ли это, потому что я не знаю, имеют ли различные операционные системы (в моем случае, Ubuntu и Mac OS X) одинаковую структуру файлов в символических ссылках.И я даже не знаю, сделает ли запись полученного содержимого в файл автоматически символической ссылкой.Честно говоря, я вряд ли сомневаюсь в этом.Может быть, команда open()
с флагом O_SYMLINK
будет работать для создания символической ссылки и записи в нее?
Другой вариант, о котором я подумал, - дать другому компьютеру понять, что мы обрабатываем ссылку, и сделатьэта ссылка на этой машине с symlink()
, но здесь у меня есть две проблемы.Прежде всего, как получить абсолютное имя файла, на которое указывает символическая ссылка в файловой системе.И вторая проблема в том, что я не знаю, сработает ли вызов symlink()
с несуществующим файлом?
Буду признателен, если кто-нибудь сможет это объяснить, т.е. f2