C++ 通过 cmd 或 shell 执行函数

C++ Execute a function through cmd or shell

本文关键字:执行 函数 shell 通过 cmd C++      更新时间:2023-10-16

第一件事,对不起,我的英语不好,问得很差。我搜索了很多,但我无法用简单的语言解释。我使用 Linux 服务器和命令行,我习惯于通过它调用程序,例如

./program foo -u adm -p 123

但是我一直想知道如何使程序像那样工作,我的意思是调用特定函数并编写参数而无需打开程序本身。

换句话说。

如果我编写这样的C++,然后编译

 #include <iostream>
 using namespace std;
 void SayHello(string Name)
 {
     cout << " Hello " << Name;
 }

我如何通过命令行调用它,例如

./Program SayHello CARLOS

对不起我的无知,但这是我想学习的东西。

感谢您的关注

如果要根据参数调用程序的函数,可以执行以下操作:

int main(int argc, char* argv[]) { 
    if(argc > 2){
        if(strcmp(argv[1], "SayHello") == 0){
            SayHello(argv[2]);
        }
    }
    return 0; 
}

当然,这只是一个草图,如果你想实现的更复杂,我可以改进。如果您希望"SayHello"以外的其他函数也可以调用,您还可以构建一个更动态的解决方案。

int main( int argc, char** argv )

这里 argc 是指参数的数量(arg 计数)argv 引用参数数组("char*"数组)(参数值)

从命令行调用程序将导致一个带有这些参数的主条目;它仍然需要解析它们并相应地启动命令。

void main() {
char *name[] = {
    "./program",
    "-c",
    "foo -u adm -p 123",
    NULL
};
execvp(name[0], name);
}

在那里,每个可执行文件都需要一个 main 函数,它是执行的入口点。

#include <iostream>
#include <string>
using namespace std;
void SayHello(string Name)
{
    cout << " Hello " << Name;
}
int main(int argc, char* argv[])
{
   if (argc > 1) 
      SayHello(argv[1]);
}

要编译此内容,请

$g++ 你好.cpp

它应该在Linux上产生a.out。

运行它

.

/a.out "世界!"