0

我有一段调用系统命令的 C++ 代码。我想将我自己的 C++ 可执行文件的文件名传递给系统命令。有人知道该怎么做吗?因此,例如我的 C++ 代码被称为“switch-5”.. 我想要做的是这样的;

system("./script.sh switch-5");

有人有任何线索吗?

4

4 回答 4

6

您的可执行文件名称是 argv 中传递的第一个参数。

要对此进行测试,只需运行:

int main(int argc, char **argv)
{
   printf("My program name: '%s'\n", argv[0]);
   return 0;
}

(我假设您知道如何将它与您的脚本名称结合起来以获取要传递给 system() 的字符串。)

于 2012-07-14T05:21:18.840 回答
0

argv[0]传递给 main 的是您的可执行文件的名称。

于 2012-07-14T05:22:15.590 回答
0

在应用启动期间将其存储在全局变量中:

static char *selfname;

int main(int argc, char **argv)
{
    selfname = argv[0];

    // etc.
}
于 2012-07-14T05:22:22.257 回答
0

请注意,argv[0] 包含用于启动程序的确切内容,包括相对或绝对路径,例如:“./programname”。

于 2012-07-14T16:09:08.787 回答