我遵循了这个关于从内核调用用户应用程序的优秀文档: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,想知道这是不是我想要的,但我还没有掌握如何使用它,也没有在上面找到任何像上面这样的文档。
提前感谢您的建议/帮助!
发布于 2011-08-22 21:11:14
>>不是ls的参数,它是外壳中的东西。可以使用/bin/sh -c "ls >> /tmp/list"(在shell中)对其进行解析。在C中,这是:
char *argv[] = { "/bin/bash", "-c", "/bin/ls >> /tmp/list", NULL};发布于 2011-08-22 20:38:03
您不能使用usermodehelper代码来执行此操作,因为它只支持在stdin连接到管道的情况下运行进程。
您可以复制它的功能,将____call_usermodehelper更改为覆盖stdin之外的stdout。
https://stackoverflow.com/questions/7143105
复制相似问题