call_usermodehelper/call_usermodehelper管道用法

call_usermodehelper/call_usermodehelper管道用法,c,linux,kernel,C,Linux,Kernel,我遵循了这篇关于从内核调用用户应用程序的优秀文档: 但我现在对如何从已经运行的应用程序中获取输出感兴趣。我尝试传入重定向操作符以将输出写入文件。。例如: char *argv[] = { "/usr/bin/ls", ">>", "/tmp/list", NULL}; call_usermodehelper(argv[0], argv, envp, UMH_WAIT_PROC); 没有这样的运气。我遇到了call\u usermodehelperpipe,想知道这是否就是我想要的,

我遵循了这篇关于从内核调用用户应用程序的优秀文档:

但我现在对如何从已经运行的应用程序中获取输出感兴趣。我尝试传入重定向操作符以将输出写入文件。。例如:

char *argv[] = { "/usr/bin/ls", ">>", "/tmp/list", NULL};
call_usermodehelper(argv[0], argv, envp, UMH_WAIT_PROC);
没有这样的运气。我遇到了
call\u usermodehelperpipe
,想知道这是否就是我想要的,但我一直无法掌握如何使用它,也无法在上面找到任何类似的文档


提前感谢您的建议/帮助

您不能使用usermodehelper代码来执行此操作,因为它只支持运行连接到管道的
stdin
进程


您可以复制它的功能,除了
stdin

>
之外,还可以更改为覆盖
stdout
不是
ls
的参数,而是来自shell的内容。可以使用
/bin/sh-c“ls>/tmp/list”
(在shell中)对其进行解析。在C中,这是:

char *argv[] = { "/bin/bash", "-c", "/bin/ls >> /tmp/list", NULL};