gpt4 book ai didi

C++ 如何在进程之间传递命令行参数?

转载 作者:搜寻专家 更新时间:2023-10-31 02:23:48 24 4
gpt4 key购买 nike

我有一个父进程需要将命令行参数发送给它的子进程?我该怎么做?我的意思是从 parent.cpp 到 child.cpp?谢谢

最佳答案

POSIX (Linux) 解决方案:

使用 execvp(const char *file, char *const argv[]) 运行带有参数的程序来代替当前程序。 argv[]您作为引用传递的,遵循与 argv[] 相同的逻辑参数传入 main() .

如果您想保持当前进程运行并在不同的进程中启动新程序,那么您必须首先 fork() 。粗略的想法是这样的:

pid_t pid = fork();  //  creates a second process, an exact copy of the current one
if (pid==0) { // this is exectued in the child process
char **argv[3]{".\child","param1", NULL };
if (execvp(argv[0], argv)) // execvp() returns only if lauch failed
cout << "Couldn't run "<<argv[0]<<endl;
}
else { // this is executed in the parent process
if (pid==-1) //oops ! This can hapen as well :-/
cout << "Process launch failed";
else cout << "I launched process "<<pid<<endl;
}

Windows 解决方案

最简单的 Windows 替代方案是使用 MS 特定的 _spawnvp() 或类似的功能。它采用与 exec 版本相同的参数,第一个参数告诉您是否要:

  • 替换调用进程(如 posix 中的 exec)
  • 创建一个新进程并保留调用进程(如上面的 fork/exec 组合)
  • 或者即使你想挂起调用进程直到子进程完成。

关于C++ 如何在进程之间传递命令行参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28903348/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com