0

当命令将用户输入作为其某些参数时,我使用 fork()/exec()/wait() 而不是 system(),因此用户不能输入类似...

&rm -rf /home/* && echo HAHA

...作为一个论点。

我假设 popen 和 system() 一样危险,因为它需要一个字符串,而不是像 exec 系列函数那样的字符串列表。

不过,我只能从 exec 函数中获取返回值。是否有一个“安全”版本的 popen 可以使用用户输入运行并在父进程中处理 stdout / stderr ?

4

1 回答 1

3

安全的方法是自己设置必要的管道,直接使用直接pipe()调用。

这就是popen()幕后的工作,但它也调用 shell 以运行子进程。跳过这一步应该使它更安全。

于 2012-05-03T13:06:21.033 回答