代码之家  ›  专栏  ›  技术社区  ›  Noctis Skytower

重定向用于引导的命令行参数

  •  1
  • Noctis Skytower  · 技术社区  · 16 年前

    我正在尝试用C而不是C_(不太可移植)重写以下程序。很明显,“int system(const char*command)”是完成程序所必需的。以“int main(int argc,char*argv[])”开头将允许获取命令行参数,但仍然存在一个难以理解的问题。如何成功地从包含空格的参数中转义?在下面的程序中,带有空格的参数(例如:screensaver.scr“这是一个测试”)将作为单独的参数(例如:screensaver.scr这是一个测试)传递给脚本,并且很容易导致问题。

    namespace Boids_Screensaver
    {
        static class Program
        {
            [STAThread]
            static void Main(string[] args)
            {
                System.Diagnostics.Process python = new System.Diagnostics.Process();
                python.EnableRaisingEvents = false;
                python.StartInfo.FileName = "C:\\Python31\\pythonw.exe";
                python.StartInfo.Arguments = "boids.pyw";
                foreach (string arg in args)
                {
                    python.StartInfo.Arguments += " " + arg;
                }
                python.Start();
            }
        }
    }
    
    2 回复  |  直到 16 年前
        1
  •  1
  •   Nick Craig-Wood    16 年前

    在Windows下执行此操作的正确方法是使用 _spawnv

    它在类Unix操作系统下的等效性是 fork() 然后 execv .

        2
  •  2
  •   Joshua    16 年前

    窗户都乱了。每个程序都有自己的规则。