从C++执行命令,argv [0]中的预期是什么?

Tom*_*and 3 c++ linux execv argument-passing

我正在使用execv()从/ bin /运行命令,例如来自我的c ++程序的'ls','pwd','echo',我想知道我应该在argv [0]中提供什么值;

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

execv(path,argv);
Run Code Online (Sandbox Code Playgroud)

Joh*_*itb 12

argv[0]应该是程序名称.它被传递给程序的main功能.有些程序根据字符串argv[0]来区分它们的行为.例如,bash如果使用sh而不是使用调用,GNU shell将禁用它的一些功能bash.最好给它传递给你的相同价值path.

在linux中,argv[0]top实用程序显示的进程名称(它可能来自读取条目/proc/)


Bag*_*get 5

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