在C#进程中指定参数
在Java中,当我想启动一个进程时,我可以告诉它要运行的命令:在C#进程中指定参数,c#,process,C#,Process,在Java中,当我想启动一个进程时,我可以告诉它要运行的命令: String[] commands = {"Perl", "-e", "print \"hello world\""} ProcessBuilder processBuild = new ProcessBuilder(); processBuild.command(commands); 在C#中,我遇到了一个问题,因为我需要做同样的事情,但我必须将文件名和参数分别作为单个字符串填写: processBuild.FileName =
String[] commands = {"Perl", "-e", "print \"hello world\""}
ProcessBuilder processBuild = new ProcessBuilder();
processBuild.command(commands);
在C#中,我遇到了一个问题,因为我需要做同样的事情,但我必须将文件名
和参数
分别作为单个字符串填写:
processBuild.FileName = commands[0];
for (int x = 1; x < commands.Length; x++)
{
processBuild.Arguments += " " + commands[x];
}
processBuild.FileName=命令[0];
for(int x=1;x
现在我不知道用户将尝试调用什么,所以我无法根据预期的程序对其进行调整。我上面的解决方案的问题是,进程试图运行perl-e打印“helloworld”
。为什么它强迫我把它当作命令行
当然,我不能做像if!从[-/]{round with quotes}
开始,因为像“cmd/c echo hello”这样的东西会变成cmd/c“echo”“hello”
。我的意思是,我想我可以做一堆if/else,并试着聪明一点,但一定有更好的方法吗
所以我求助于你们来帮助我。我如何用C语言启动一个以非cmd行方式指定其参数的进程?进程类在后台使用CreateProcess API,这是启动进程可用的最低级别API之一。此API将可执行文件与参数分开,因为它与您一样难以区分它们 两种解决方案:
- 启动cmd.exe作为进程,并将“command”作为参数传递给 信息技术cmd.exe将为您进行分析
- 尽管这很困难,但还是自己进行解析
execv
或execvp
),这样就不需要相关引用的知识了?