April 2032
|
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
|
1/9/10 09:10 pm
викторина
В каком случае программа mkfs (точнее даже mkfs.vfat) может выдать ошибку Not a directory (ENOTDIR)? Комменты скринятся до вечера понедельника (11 января).
1/9/10, 08:15 pm
$ /sbin/mkfs.vfat /dev/null/ mkfs.vfat 3.0.7 (24 Dec 2009) /dev/null/: Not a directory
1/9/10, 08:41 pm
Очевидно, когда в указанном имени девайса-файла какой-то компонент между слэшами существует, но является файлом. Впрочем, это будет относится и к другим файловым аргументам (типа -m).
1/9/10, 09:15 pm
$ touch /tmp/1 $ /sbin/mkfs.vfat /tmp/1/1 mkfs.vfat 2.11 (12 Mar 2005) /tmp/1/1: Not a directory
1/9/10, 09:21 pm
Почитал ман, нашёл, например, опцию -c:
fenster@home:~/dosfstools-3.0.7$ touch foo fenster@home:~/dosfstools-3.0.7$ mkfs.vfat -c foo/bar mkfs.vfat 3.0.7 (24 Dec 2009) foo/bar: Not a directory
1/9/10, 09:22 pm
Кстати, как видно из pwd, даже скачал сорцы и поглядел их по диагонали, но ответ-таки придумал, читая именно ман, а не сорцы :)
1/9/10, 09:25 pm
$ touch /tmp/1 $ dd if=/dev/zero of=/tmp/img count=1 bs=1M 1+0 records in 1+0 records out 1048576 bytes (1.0 MB) copied, 0.00184509 s, 568 MB/s $ /sbin/mkfs.vfat -m /tmp/1/1 /tmp/img mkfs.vfat 2.11 (12 Mar 2005) /tmp/1/1: Not a directory
1/9/10, 09:30 pm
max@max$touch 1 max@max$/sbin/mkfs.vfat ~/1/fs 1000
1/9/10, 09:33 pm
Например, если /dev - файл ;)
1/9/10, 10:15 pm
В случае, если в пути к устройству вы использовали в качестве каталога компонент, не являющийся каталогом. Что-то вроде mkfs.vfat /bin/ls/hda
1/9/10, 11:21 pm
Ну, например, вот так:
[root@home ~]# dd if=/dev/zero of=/root/1.vfat bs=512 count=100 100+0 записей считано 100+0 записей написано скопировано 51200 байт (51 kB), 0,000683887 c, 74,9 MB/c [root@home ~]# mkfs.vfat 1.vfat/floppy.fat mkfs.vfat 3.0.1 (23 Nov 2008) 1.vfat/floppy.fat: Not a directory
Судя по mkdosfs.c, таких случаев в принципе не так уж и много. Можно еще вот так, например:
[root@home ~]# dd if=/dev/zero of=/root/1.vfat bs=512 count=100 100+0 записей считано 100+0 записей написано скопировано 51200 байт (51 kB), 0,000683887 c, 74,9 MB/c [root@home ~]# mkfs.vfat 1.vfat/floppy.fat mkfs.vfat 3.0.1 (23 Nov 2008) 1.vfat/floppy.fat: Not a directory
Какой приз? :-))
1/9/10, 11:22 pm
Второй пример вот такой (copy/paste сбился):
[root@home ~]# mkfs.vfat -m 1.vfat/message-file /root/2.vfat mkfs.vfat 3.0.1 (23 Nov 2008) 1.vfat/message-file: Not a directory
1/9/10, 11:26 pm
ENOTDIR выдается и в тех случаях, когда компонент адресуемого пути является не является директорией. Например, ls -l /bin/sh/fork скажет ls: cannot access /bin/sh/fork: Not a directory
Так что в случае mkfs.vfat подобная реакция должна быть на указание имени устройства, сконструированного по указанному типу, вроде /dev/fd0/fork, а также в любой опции, где можно указать в качестве аргумента файл: -B, -l, -m, -n.
1/10/10, 11:30 am
Судя по всему в трех случаях: 1)"On m68k, check if this is an Atari; if yes, turn on Atari variant * of MS-DOS filesystem by default." 2)При передаче параметра -m с определенным значением 3)При передаче параметра -c (проверка ФС после создания)
Ошибка произойдет если в части пути передаваемом функции fopen за место каталога будет файл.(proc, dev, message file, image file)
З.Ы. Извинияюсь заранее если не понял смысла вопроса
1/11/10, 09:49 am
Рискну предположить обычное ( специально не проверяю ) mkfs /dev1/sdc1
|