Проблема с запуском процесса из модуля ядра Linux

Если ваш файл уже отсортирован, как насчет:

uniq --skip-field=1 file

в противном случае вы можете сначала отсортировать свой файл, а затем использовать uniq :

sort -k2 file | uniq --skip-field=1

Вывод:

file_35.txt 8208ad321576b521b23b07b9ba598e5c43b03ec4172c96fdbd35a858ec205ae6
file_32.txt aaf6b8c4a95d0e8f191784943ba1ea5c0b4d4baab733efe8ceb8b35478b6afd2
2
05.04.2017, 01:09
1 ответ

Поиграв с ним еще и увидев некоторые комментарии о необходимости явно указывать переменные среды, поскольку мы находимся внутри ядра, я изменил свой модуль ядра, чтобы он выглядел так, и теперь открывается браузер. с call_usermodehelper ()

int rc;

static char *envp[] = {
    "SHELL=/bin/bash",
    "HOME=/home/admin",
    "USER=admin",
    "PATH=/home/admin/bin:/home/admin/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/admin",
    "DISPLAY=:0",
    "PWD=/home/admin", 
    NULL};

char *argv[] = {"/home/admin/mySample", NULL};

rc = call_usermodehelper(argv[0], argv, envp, UMH_WAIT_EXEC);
printk("RC is: %i \n", rc);

Пример программы теперь выглядит так:

#include <stdio.h>
#include <string.h>
#include <unistd.h>

int main()
{
    char *arg[] = {"firefox", "/home/admin/sample.html", NULL};
    execvp(arg[0], arg);
    return 0;
}
3
27.01.2020, 22:18

Теги

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