Из модуля ядра я пытаюсь использовать функцию call_usermodehelper для выполнения исполняемого файла sha1, который принимает файл как аргумент и записывает хэш-сумму SHA1 файла в другой файл (с именем output). Исполняемый файл отлично работает.Почему call_usermodehelper терпит неудачу в большинстве случаев?
int result=-1;
name = "/home/file"
char *hargv[] = {"/home/sha1", name,NULL };
char *henvp[] = {"HOME=/", "PATH=/sbin:/usr/sbin:/bin:/usr/bin", NULL };
result = call_usermodehelper("/home/sha1", hargv, henvp, 1);
Но большую часть времени call_usermodehelper возвращает -14 и не выполняет исполняемый файл. Что может быть причиной?
Иногда он работает, но затем созданный выходной файл заблокирован (в отличие от того, что происходит, когда sha1 запускается напрямую), и я должен запустить chown, прежде чем я смогу использовать его правильно. Как это можно предотвратить?
Есть ли способ выполнить эту операцию без вызова_сервера?
Кажется, что нужно работать после смены на 2. Спасибо. –