0
我使用fork()/执行exec()/等待(),而不是系统()时,该命令具有用户输入它的一些参数,使用户不能把类似...popen()的安全版本?
&rm -rf /home/* && echo HAHA
......作为一个论点。
我假设popen和system()一样危险,因为它只需要一个字符串,而不是象exec函数家族那样的字符串列表。
虽然我只能从exec函数获取返回值。有没有一个“安全”的popen版本,我可以用用户输入运行并在父进程中处理stdout/stderr?
+1是的,只要看看popen源代码(例如:http://www.cse.lehigh.edu/~brian/course/2011/cunix/notes/ch11/popen.c) –
@Adriano,很好......谢谢。你也放松。看起来popen已经使用execl;我可能只是复制它,但传递参数作为null终止的va_list或char * []并调用execv而不是execl。 –