LINUX.ORG.RU

Помогите с exec


0

0

Эта фукция может запускает какой нить скрипт... Она дожидается или нет окончания выполнения скрипта, если ожидает, то какая функция может запустить внешний файл и не дожидаясь его выполнения, продолжить выполнение программы со следующей строки кода??

anonymous

Блин не знаю как обьяснить...
Попробую написать сюда свою задачу...
есть патч для ядра, который в iptables добовляет квоту, в сырцы ядра добовляется файл ipt_qouta.c. Появляется возможность задать правило с квотой, при поподании в которое квота будет уменьшаться на длину попавшего пакета (эти действия написаны вот в этом файле ipt_qouta.c). Ну так вот, я хочу ещё дописать в файл ipt_quota.c, чтоб при попадании в это правило с квойтой сетевого пакета выполнялcя другой файл, для этого я добовляю строчку:
if (fork()==0) wait(0);
else execl ("/usr/bil/myfile", "/usr/bil/myfile",0);
Так вот в чём вопросы:
1. Ничего тут такого страшного нет?? С ядром ничего не произойдёт?
2. Я вызываю форк, а на самом деле данный файл (ipt_qouta.c), будет не выполняемой програмой, а модулем ядра, сможет ли потомок процесса создаться???

З.Ы. В программировании на Си я ламо, умею программировать только на Pascal, Delphi под win32 и до недавнего момента не понимал, зачем нужны сырцы, почему они обязательно должны быть открыты, а не просто должна распрастроняться бесплатно скомпилированная программа.

anonymous
()
Ответ на: комментарий от anonymous

Хороший совет: не пытаться заниматься такими вещами (без обид).

Плохой совет: из ядер 2.4 можно создать процесс (в контексте процесса, не прерывания!) через call_usermodehelper (см. linux/kernel/kmod.c).

Murr ★★
()

посмотри исходники kernel-module autoloader, он запускает modprobe

grustnoe ★★
()

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

OxiD ★★★★
()

Блин, как и предпологал я, не получилось сделать так, как писал выше... Вот вы мне советуете исходники ядра посмотреть, а я же ведь в Си на начальном уровне, мне там всё равно ничего не понятно... Может кто нить напишет, как из модуля запустить другой процесс ...

anonymous
()

Не ругайтесь, вот щас посмотрел на то, как modprobe запускается, вроде понятно, вечером приду домой попробую...

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.