Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » UNIX » Выполнение бинарников из потомка

Модерирует : ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

botcser

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Для кото-то данная проблема может показаться пустяком, но я бьюсь над ней уже не меньше месяца.
Суть такова - загружаю модуль ядра, в нем при старте вызываю kern_execve на файл - успешно вызывается бинарник, отрабатывает, затем модуль дозагружается. Но мне надо параллельное выполнение, чтобы модуль не ждать завершения исполнения бинарника.
 
Делаю так - загружаю бинарник, в нем при старте вызывают kthread_create, следом в функции потомка вызываю kern_execve - получаю ошибку errno 2 "нет такого файла", т.е. моего бинарника. Почему? Я перепробывал много - менял флаги процесса потомка; отлаживал запуск kthread_create дна; игрался с сруктурами родителя и потомка... - безуспешно, максимум чего получалось достичь - сис вызовы возвращали 0, т.е. успех, а вызова все равно не происходил.

Всего записей: 3 | Зарегистр. 23-05-2016 | Отправлено: 13:13 23-05-2016
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
botcser
Делайте kthread_create в коде module_init функции, а от туда уже exec'айти как и что хотите.

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 15:55 23-05-2016
botcser

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору


Цитата:
Делайте kthread_create в коде module_init функции, а от туда уже exec'айти как и что хотите.

 
Извините, но я это же и описал в вопросе - в модуле ядра Freebsd существует только одна необходимая функция, а именно это функция static int start(struct module *module, int cmd, void *arg), в которой стоит свич на загрузку, выгрузку. Вот в самой это функции я и вызывал kthread_create и exec, как описал выше.

Всего записей: 3 | Зарегистр. 23-05-2016 | Отправлено: 16:23 23-05-2016
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
botcser
Ну так о фре только сейчас упомнять удосужились. Тут мне сказать Вам нечего.

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 16:31 23-05-2016
botcser

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Принцип ничем не отличается от типа ядра...зачем вставлять в ядро проверку текущей директории у процесса... (если она NULL => retrurn 2)

Всего записей: 3 | Зарегистр. 23-05-2016 | Отправлено: 09:37 27-05-2016
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Операционные системы » UNIX » Выполнение бинарников из потомка


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru