Отправляет email-рассылки с помощью сервиса Sendsay

File's and directory's

Кто-нибудь объяснит мне вывод следующей команды в Linux?

od -cb .

od: .: ошибка чтения: Is a directory
0000000

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 24943; Возраст листа: 943; Участников: 1469
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/518820

Ответить   Wed, 22 Feb 2006 15:57:02 +0500 (#518820)

 

Ответы:

22 февраля 2006 13:57 | saturas:

NAME
od - dump files in octal and other formats
^^^^^

А Вы ему пытаетесь каталог скормить. :) Кормите файлами - od будет рад. :)

Ответить   Roman I Khimov Wed, 22 Feb 2006 14:33:08 +0300 (#518843)

 

Roman I Khimov wrote:

Это я понимаю... Что натравливаю на каталог. А как же быть с
утверждением, что в UNIX - всё есть файл?

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 24950; Возраст листа: 943; Участников: 1469
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/518881

Ответить   Wed, 22 Feb 2006 17:45:16 +0500 (#518881)

 

22 февраля 2006 15:45 | saturas:

Из любого правила есть исключения лишь подтверждающие основное правило. :)

Ответить   Roman I Khimov Wed, 22 Feb 2006 17:41:24 +0300 (#518926)

 

Roman I Khimov wrote:

Хорошая фраза. Вот только не помню, кто её автор :-(.
Просто видимо в Linux ядро устроено несколько иначе, чем в других
unix-like ОС.

:-)

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 24959; Возраст листа: 943; Участников: 1469
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/518942

Ответить   Wed, 22 Feb 2006 20:36:26 +0500 (#518942)

 

Hi saturas,

Wednesday, February 22, 2006, 6:36:26 PM, you wrote:

Неужели утилита командной строки od уже встроена в ядро? (это,
наверное, в то 6.х.х, о котором писал один наш друг)
Кстати. А что тебе od тебе выдала на "других unix-like"? вывод - в
студию!
И какие ты хотел получить сведения из директории в octal format????

Ответить   Wed, 22 Feb 2006 21:24:27 +0300 (#518994)

 

Timothy Silent wrote:

Есть такое понятие.... system calls (системные вызовы). И в частности
вызов open.

#include <sys/file.h>
int open(char *name, int flags, int mode);

Если включить errno.h, то можно в переменной errno узнать ошибку...
...
EISDIR - попытка открыть на ЗАПИСЬ каталог
...
Бр... так вроде я ж его только на чтение открываю... Кто-нибудь
объяснит, как это вяжется с POSIX-стандартами?

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 24982; Возраст листа: 944; Участников: 1466
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/519091

Ответить   Thu, 23 Feb 2006 08:23:16 +0500 (#519091)

 

В сообщении от 1140675796 секунд после начала Эпохи saturas написал(а):

IMHO лучше воспользоваться glob(3) или readdir(3). Первая соответствует
POSIX.2, вторая - POSIX 1003.1-2001.

Ответить   Konstantin Korikov Thu, 23 Feb 2006 11:40:46 +0200 (#519190)

 

23 февраля 2006 06:23 | saturas:

Хм. А это действительно забавно. Только что проверил на FreeBSD 4.11,
работает od с каталогами, как миленький. В мане к нему на той же машине
указано:

The od utility conforms to IEEE Std 1003.1-2001 (``POSIX.1'').

В мануале к od и GNU coreutils не сказано по стандартам ничего. :(

Собрал свежайший coreutils-5.94, ситуация та же. В исходниках единственный
fopen делается так:

in_stream = fopen (input_filename, (O_BINARY ? "rb" : "r"));

То есть read-only.

А вот показания strace куда как интереснее:
...
open(".", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFDIR|0755, st_size=308, ...}) = 0
mmap2(NULL, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)
= 0x40129000
read(3, 0x40129000, 65536) = -1 EISDIR (Is a directory)
...

Есть мнение, что портит всю картину mmap2, а вот откуда он такое берется с
PROT_WRITE - надо рыть. :) Есть мнение, что из Glibc.

Ответить   Roman I Khimov Thu, 23 Feb 2006 14:28:04 +0300 (#519225)

 

23 февраля 2006 14:28 | Roman I Khimov:

Ой, идиот... man 3 read!

ERRORS
...
EISDIR fd refers to a directory.

Собственно, все. Приплыли.

CONFORMING TO
SVr4, SVID, AT&T, POSIX, X/OPEN, BSD 4.3

Ответить   Roman I Khimov Thu, 23 Feb 2006 14:37:25 +0300 (#519228)

 

23 февраля 2006 14:37 | Roman I Khimov:

Еще раз идиот. `man 2 read`, конечно же.

В BSD, кстати говоря, ошибка EISDIR описывается так:

[EISDIR] The file descriptor is associated with a directory
residing on a filesystem that does not allow regular
read operations on directories (e.g. NFS).

Ну и

STANDARDS
The read() function call is expected to conform to ISO/IEC 9945-1:1990
(``POSIX.1''). The readv() and pread() functions are expected to
conform to X/Open Portability Guide Issue 4, Version 2 (``XPG4.2'').

Ответить   Roman I Khimov Thu, 23 Feb 2006 14:44:12 +0300 (#519230)

 

Hi Roman,

Thursday, February 23, 2006, 2:37:25 PM, you wrote:

Спасибо за ссылку на ман. А то я сижу и думаю:
Что же может значить E[rrors]IS[_]DIR ;)))
И при чем здесь запись в каталог? :\

Ответить   Thu, 23 Feb 2006 16:23:08 +0300 (#519279)

 

saturas пишет:

Нет, скорее программа фильтрует всё на файлы/папки... И ядро тут не причём..

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 24971; Возраст листа: 943; Участников: 1469
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/518997

Ответить   Thu, 23 Feb 2006 01:58:21 +1000 (#518997)

 

Constantine пишет:

Ядро тут причём.

$ man 2 read
...............
ОШИБКИ
...............
EISDIR fd ссылается на каталог.
...............

Ответить   Wed, 22 Feb 2006 23:02:15 +0200 (#519045)

 

Yuri N. Glibovetz wrote:

Вообще приведённый мною пример работает во фре и в юниксе... Но как
сказал Roman I Khimov
"Из любого правила есть исключения лишь подтверждающие основное правило.
:) "
Пусть для Linux это будет приятным исключением. Вообще про EISDIR я знаю....

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 24981; Возраст листа: 944; Участников: 1466
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/519090

Ответить   Thu, 23 Feb 2006 08:17:35 +0500 (#519090)

 

Yuri N. Glibovetz wrote:

Ребят, ни у кого нет стандарта POSIX? Очень хочется почитать.........

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 24983; Возраст листа: 944; Участников: 1466
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/519092

Ответить   Thu, 23 Feb 2006 08:26:22 +0500 (#519092)

 

Здравствуйте!

Правильно! Но тут нужно оговориться - ведь всё зависит не от ОС, а от файловой
системы - в файловых системах ext2 и ext3 действительно всё есть файл. А вот
насчёт
других ФС, которые поддерживает Linux (а таких весьма много), сомневаюсь...

Ответить   Korableov Dimon (#526164)

 

В сообщении от 22 февраля 2006 15:45 saturas написал(a):

Это правда. Только - что из этого следует?

А следует из этого только то, что вы можете использовать
open(), read(), write(), close() и ещё ряд методов. И это
всё!

Система вам позволила открыть каталог через open(). Но вам
никто не обещал, что на ваш read() вы получите raw
содержимое каталога или какую-либо другую информацию. Да,
ранние bsd так и поступали, более того - это был
единственный способ получить список файлов, но с появлением
поддержки различных типов файловых систем всё изменилось и
в лучшем случае вы с порога получите eof, а в худшем вы
будете посланы (что и делает linux).

Ответить   "Sergey B. Khvatov" Sun, 26 Feb 2006 11:35:33 +0300 (#520309)

 

On Wed, 22 Feb 2006 14:33:08 +0300
Roman I Khimov wrote:

На самом деле это очень трагично. Не знаю, откуда возникла эта идея у saturas,
но я вычитал в какой-то старой книжице про уних, описывалась структура файловой
системы. Очень наглядно. Было бы. Так что я в свое время плакал.

Ответить   Matvey Wed, 22 Feb 2006 22:30:24 +0200 (#519030)

 

Matvey wrote:

А может да ну его POSIX :-). Главное, чтобы всё работало. Всё на фронт!
Всё для борьбы с M$. :-)))

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 24984; Возраст листа: 944; Участников: 1466
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/519095

Ответить   Thu, 23 Feb 2006 08:38:04 +0500 (#519095)

 

В сообщении от 22 февраля 2006 13:57 saturas написал(a):

Так и должно быть.

Да и нет в каталогах ничего интересного - только имя и номер
inode.

Ответить   "Sergey B. Khvatov" Wed, 22 Feb 2006 15:00:06 +0300 (#518859)

 

saturas skribis:

NAME
od - dump files in octal and other formats

(ц) man od

Мысль ясна? Эта утилита дампит файлы, но никак не каталоги.

--
С уважением,
Александр Симонов

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 24947; Возраст листа: 943; Участников: 1469
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/518869

Ответить   Aleksandr Simonov Wed, 22 Feb 2006 16:34:26 +0500 (#518869)