我使用execv()运行从/ bin中/命令,如从我的C 'LS', 'PWD', '回响' ++程序,我想知道什么值I应argv中提供[0];

const char * path = getPath();
char ** argv = getArgs();

execv(path,argv);
有帮助吗?

解决方案

argv[0]被认为是程序名称。它传递给程序的main功能。某些程序取决于什么字符串argv[0]是区分他们的行为。例如,如果使用bash代替sh称为GNU bash外壳将禁用它的一些特性。最好给它传递给path相同的值。

在Linux中,argv[0]是进程名显示在由top实用程序(它有可能从在/proc/读取条目获取)

其他提示

的argv [0]应该是要运行的命令的完整路径。

我知道,这是不是你要找的答案,但有没有一个具体的理由你为什么这样做?我想问的原因是,大多数如果不是所有的行动,人们通常用两种system()execv()运行在Windows或Unix的库可用,更安全,更快捷,更不可能从的间接的错误受苦。我的意思是,例如,当PATH变化,突然你的代码停止工作。

如果你传递一个字符串,无论是全部或部分,并运行它,那么你也给自己打开输入可能被损坏的命令获得访问系统的用户。例如。想象一下,你已经实现了使用find /home -name文件搜索和您的用户类型:

"%" -exec rm {} \;

哎哟!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top