Консультация № 84687
29.04.2007, 14:42
0.00 руб.
0 2 2
Глубокоуважаемые эксперты!
Обращаюсь к Вам со следующим вопросом. Где не посмотрю, во всех источниках приводится описание таких команд, как mkdir, chmod( и подобных) и соответствующих им функций. Но возник интерес в реализации этих команд на языке С, исключая использование этих одноимённых функций. Т.о., вопрос в следующем: каким образом можно реализовать эти команды? Если кто-нибудь имеет такую возможность, не могли бы Вы предоставить исходный код подобной реализации.

Заранее спасибо!

Обсуждение

Неизвестный
29.04.2007, 15:43
общий
это ответ
Здравствуйте, VSP!

mkdir(), chmod() и подобные функции это API ядра, которое должны присутствовать в любой POSIX совместимой системе. по сути все что можно сделать, это если знать реализацию _конкретного_ ядра, вызывать каким ни буть обходным путем код в ядре, реализующий это API. например linux можно воспользоваться 80h прерыванием, во FreeBSD можно узнать указатель на таблицу сисколов и вызывать нужную фунцию напрямую (или если есть поддержка linux syscall API то тоже через int 80h).

ссылки в тему, с примерами кода на С:
http://gazette.linux.ru.net/lg94/ramankutty.html
http://www.av5.com/journals-magazines-online/1/27/200
Неизвестный
02.05.2007, 06:43
общий
это ответ
Здравствуйте, VSP!

mkdir(), chmod() и подобные им на самом дете не являются функциями как таковыми - это всего лишь обертки для вызова тех или иных функций ядра, которых как правило меньше, и они принимают большие списки параметров для реализации семейства функций (например, strstr(), strchr(), strcasestr() и т.д.). Реализация функций-оберток приведена в исходниках libc, а реализация собственно функций ядра - в исходниках ядра
Форма ответа