繁体   English   中英

execve() 是做什么的?

[英]What does execve() do?

execve() 究竟做了什么? 我试过查看文档 (http://linux.die.net/man/2/execve),但考虑到我对 linux 很陌生,这种编程没有多大意义。 我想要做的是能够执行这个命令:

nc -l -p someport -e /bin/sh

我可以做类似下面的事情吗(其中 someport 是一个数字,例如 4444)

char *command[2];
command[0] = "nc -l -p someport -e /bin/sh"
execve(command[0], name, NULL);

execve要求操作系统开始执行当前进程中的不同程序。

您很可能想要execvpexeclp - 您没有提到任何关于想要为孩子提供环境的事情,但从外观上看,您可能确实希望搜索路径以找到您正在使用的可执行文件.

正确的用法是

extern char * const environ[];
char * const command[] = {"nc", "-l", "-p", "porthere", "-e", "/bin/sh", NULL};
execve("/usr/bin/nc", command, environ);

您必须使用完整的路径名,而不是诸如"nc"类的短名称(更准确地说:不进行PATH搜索,路径名必须是实际存在的文件),并且您必须事先将 arguments 拆分为单独的字符串。 您还需要以某种方式传播环境,通过上面代码段中提到的外部environ或从main()的第三个参数获得; 后者稍微更符合标准,但根据需要传递可能会更痛苦。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM