在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