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

时间:2015-03-06 16:37:40

标签: c++ command-line process pipe args

我有一个父进程需要将命令行args发送给它的子进程吗?我怎么能这样做?我的意思是从parent.cpp到child .cpp? 感谢

3 个答案:

答案 0 :(得分:2)

POSIX(Linux)解决方案:

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

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

main()

Windows解决方案

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

  • 替换调用进程(如posix中的exec)
  • 创建一个新进程并保持调用进程(如上面的fork / exec组合)
  • 或者甚至要暂停调用进程,直到子进程完成。

答案 1 :(得分:0)

如果使用fork(),那么子进程将继承父进程。

http://man7.org/linux/man-pages/man2/fork.2.html

如果您只想在内存中的对象实例之间传递变量,那么您可以创建int argcchar * argv[]的变量来传递。

答案 2 :(得分:0)

在父母身上。使用

system("child_application my arg list");

在孩子身上。使用

int main(int argc, char *argv[])

为了便于解析args,请尝试使用boost program_options库。

在unix系统中可以使用fork。子进程获取所有父内存。