То, что вы описываете, это не имя диска, а имя устройства блочного устройства, представляющего раздел, смонтированный в корневом каталоге (/). На обычном компьютере это обычно что-то вроде /dev/sdXN
или /dev/hdXN
, где X - номер диска (первичный жесткий диск обычно A, вторичный - B и т. Д.), А N - номер раздела на этом устройстве.
При условии, что вы всегда работаете в системе Unix, вы можете попробовать прочитать файл / etc / mtab, в котором перечислены все смонтированные разделы, или специальный файл /proc/mounts
, который в значительной степени делает то же самое. Затем вам нужно будет проанализировать его, чтобы найти тот, который вам нужен, и получить имя устройства.
В качестве альтернативы, вы можете просто запустить df
как процесс и получить его ввод в perl, что-то вроде
open(DF, "df|");
@mount_points = <DF>;
close(DF);
, а затем переберите данные, чтобы найти то, что вам нужно. Я не знаю ни о каких модулях в верхней части моей головы, которые бы сделали эту работу за вас, но код все равно кажется мне довольно простым.
P.S. Обратите внимание, что Max OS X, будучи производной от BSD, не имеет такой же файловой структуры, и поэтому этот подход не будет работать. В Mac OS X вы можете прочитать файл /etc/fstab.hd
, который содержит аналогичную информацию, но в несколько ином формате.