Как работает & # 39; ls & # 39; Командная работа в Linux / Unix?

Согласно жесткой интерпретации объектно-ориентированного дизайна, следует избегать использования служебного класса.

Проблема в том, что если вы будете следовать жесткой интерпретации, вам нужно будет заставить свой класс на какой-то объект сортировки, чтобы выполнить много вещей.

Даже дизайнеры Java делают классы полезности (java.lang.Math приходит на ум)

Ваши варианты:

double distance = Math.sqrt(x*x + y*y);  //using static utility class

vs:

RootCalculator mySquareRooter = new SquareRootCalculator();
mySquareRooter.setValueToRoot(x*x + y*y);
double distance;
try{
   distance = mySquareRooter.getRoot();
}
catch InvalidParameterException ......yadda yadda yadda.      

Даже если мы должны избегать verbose, мы все равно можем:

Mathemetician myMathD00d = new Mathemetician()
double distance = myMathD00d.sqrt(...);

в этом случае, .sqrt () по-прежнему статично, так что же было бы в создании объекта в первую очередь?

Ответ заключается в создании классов утилиты, когда другим вариантом будет создание какого-то искусственного класса «Рабочий», который не имеет или мало использует переменные экземпляра.

13
задан slideshowp2 23 April 2019 в 02:31
поделиться

4 ответа

ls не разветвляется. Ветвления оболочки и должностные лица для выполнения любой команды, которая не встроена, и одна из команд, которые это может выполнить, являются ls.

ls использует opendir () и readdir () для продвижения через все файлы в каталог. Если требуется больше информации об одном из них, это называет статистику ().

38
ответ дан Mark Baker 23 April 2019 в 02:31
поделиться

Добавить к ответу, в книге Языка программирования C (K& RC) они дали небольшой пример о том, как пойти о реализации ls. Они объяснили datastructures и функции, используемые очень хорошо.

10
ответ дан Sushant 23 April 2019 в 02:31
поделиться

Если Вы действительно хотите понять подробные внутренности ls, посмотрите на исходный код. Можно перейти по ссылке tpgould к источнику Соляриса, или легко найти источник онлайн из любого Linux или распределения BSD.

я особенно рекомендую 4.4BSD источник.

, Поскольку я вспоминаю, ls запускается путем парсинга его многих опций, затем запускается с файлов или каталогов, перечисленных на командной строке (значение по умолчанию). Подкаталоги обрабатываются рекурсией в стандартную программу списка каталога. Нет никакого ветвления () или должностное лицо (), что я вспоминаю.

3
ответ дан mpez0 23 April 2019 в 02:31
поделиться

Для понимания, что делает ls Вы могли взять глупца в источнике OpenSolaris: https://hg.java.net/hg/solaris~on-src/file/tip/usr/src/cmd/ls/ls.c.

, Если thatВґs подавляющий, на Солярисе Вы начинаете при помощи связки смотреть на системные вызовы, которые ls делает для понимания то, что это делает. Используя связку, попробуйте:

-afl-o ls.out/bin/ls

связки тогда смотрит на вывод в ls.out

, я полагаю, что трассировка является эквивалентом для связывания в Linux.

4
ответ дан alanc 23 April 2019 в 02:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: