【发布时间】:2012-07-14 05:19:35
【问题描述】:
我有一段调用系统命令的 C++ 代码。我想将我自己的 C++ 可执行文件的文件名传递给系统命令。有人知道该怎么做吗? 因此,例如我的 C++ 代码被称为“switch-5”.. 我想做的是这样的;
system("./script.sh switch-5");
有人知道吗?
【问题讨论】:
我有一段调用系统命令的 C++ 代码。我想将我自己的 C++ 可执行文件的文件名传递给系统命令。有人知道该怎么做吗? 因此,例如我的 C++ 代码被称为“switch-5”.. 我想做的是这样的;
system("./script.sh switch-5");
有人知道吗?
【问题讨论】:
您的可执行文件名称是传入 argv 的第一个参数。
要测试这个,只需运行:
int main(int argc, char **argv)
{
printf("My program name: '%s'\n", argv[0]);
return 0;
}
(我假设您知道如何将它与您的脚本名称结合起来以获取要传递给 system() 的字符串。)
【讨论】:
argv[0] 传递给 main 是您的可执行文件的名称。
【讨论】:
argv[0] 往往是可执行文件的名称,但我的理解是这是一个约定,不能保证......
在应用启动期间将其存储在全局变量中:
static char *selfname;
int main(int argc, char **argv)
{
selfname = argv[0];
// etc.
}
【讨论】:
请注意,argv[0] 包含用于启动程序的确切内容,包括相对或绝对路径,例如:“./programname”。
【讨论】: