использование call_usermodehelper / call_usermodehelperpipe - PullRequest
5 голосов
/ 22 августа 2011

Я следовал этому замечательному документу по вызову пользовательских приложений из ядра: http://www.ibm.com/developerworks/linux/library/l-user-space-apps/index.html

Но теперь меня интересует, как получить вывод от запущенных приложений. Я попытался передать операторы перенаправления, чтобы записать вывод в файл .. Например:

char *argv[] = { "/usr/bin/ls", ">>", "/tmp/list", NULL};
call_usermodehelper(argv[0], argv, envp, UMH_WAIT_PROC);

Нет такой удачи. Я наткнулся на call_usermodehelperpipe и подумал, будет ли это то, что мне нужно, но я не смог понять, как его использовать или найти какие-либо документы, подобные приведенному выше.

Заранее спасибо за предложения / помощь!

Ответы [ 2 ]

4 голосов
/ 22 августа 2011

>> не аргумент для ls, это что-то из оболочки. Его можно проанализировать с помощью /bin/sh -c "ls >> /tmp/list" (в оболочке). В С это:

char *argv[] = { "/bin/bash", "-c", "/bin/ls >> /tmp/list", NULL};
2 голосов
/ 22 августа 2011

Вы не можете использовать код usermodehelper для этого, так как он поддерживает только запуск процесса с stdin, подключенным к каналу.

Вы можете дублировать его функциональность, изменив ____call_usermodehelper для переопределения stdout в дополнение к stdin.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...