在Unix上,我们可以使用fork()创建一个新进程; execvp(argv [0],argv); (如果我们是分岔后的父母或孩子,则需要一些管道工)。在子进程中,main(argc,argv)会在传递给execvp时看到字符串。在Windows上,_spawn()系列基本实现fork(); EXEC();一步到位。到目前为止,这么好。问题是,当我们到达孩子的main()时,我们的字符串不是他们的。让我举个例子。如何避免使用_spawnvp()删除空间拆分和报价
argv[0] = "foo";
argv[1] = "bar";
argv[2] = "Use spaces and \"quotes\"";
_spawnvp(0, argv[0], argv);
当我们到了孩子,在main(),我们会发现,在这个例子中,argv的[0]和argv被预期[1],但ARGV [2]已经被符号化的空间和报价去除,使得
argv[2] == "Use"
argv[3] == "and"
argv[4] == "quotes"
我怎样才能为的是通过从父的argv的结构孩子,它被重新解释和改变?
如果用单引号括起来会发生什么? argv [2] =“'使用空格和\”引号\“'”; – chrisaycock 2010-11-10 17:31:50
@Chris:这甚至不接近C语法。 – Puppy 2010-11-10 18:06:33