Ответы от Jason Day и A.Danischewski, кажется, находятся на правильном пути, но не соответствуют вашим критериям любой "Unix-подобной системы", так как /sbin/blkid
и /etc/fstab
не существуют в OSX.
Единственный 100% переносимый подход заключается в выборе стандартного местоположения для файла, который будет создано вашим собственным приложением, например /etc/YOURAPP.cfg
и сохраните там UUID, если он еще не существует.
Далеко не идеально, поскольку другой человек или приложение могут удалить файл или изменить его, или если пользователь изменил корневую файловую систему, вы можете потерять идентификатор с текущего компьютера или он может появиться на другом компьютере. Не говоря уже о проблемах с разрешениями на чтение и запись и т. Д.
Но, в конце концов, не существует такого понятия, как «та же самая машина». Любой компьютер не больше и не меньше, чем его компоненты + текущая конфигурация. Я не думаю, что вы можете сделать лучше, чем это, переносимо.