2014-10-19 49 views
0

我试图接受用户输入并将其作为文件名传递给execve()绕过const char * execve()的要求

我使用malloc()char* filename分配足够的内存,然后将其填充到要执行的文件的路径。

execve()但是,需要一个const char*,所以它不会编译。有什么办法可以绕过这个吗?我见过有些人使用execve()作为shell,所以我认为可以将它传递给用户定义的char数组。
我无法使用execvp()或任何自动搜索PATH的其他变体。

谢谢!

+1

我想通了,这是一个非常愚蠢的错误。在第二个参数中,我放了'arg [0]'而不是'arg'。我投票删除这篇文章,因为它可能不会帮助其他人。 – Hal 2014-10-19 20:51:53

回答

2

你在说什么“它不会编译,因为execve()需要const char*”是无稽之谈。您始终可以将非const变量传递给const方法参数。所以你的问题应该在别的地方。请发布更多代码。

+0

是的,你完全正确!我一直编码了12个小时,所以我一定累了。错误在于第二个参数,这也是一个非常简单的错误。我发送了'arg [0]'而不是'arg'。 那么,我删除这个问题,还是把它留下? – Hal 2014-10-19 20:40:02

+0

无需删除此问题。只要接受这个答案,并结束:) – 2014-10-19 20:54:26