我想在类Unix系统上从Mono应用程序启动一个进程,指定命令行参数和文件描述符。
例如,这包括:
将stdout和stderr重定向到相同的fdes
将stdout重定向到管道,并将管道的另一端连接到另一个进程的stdin
重定向fdes> 2(不是stdin,stdout,stderr)
这些基本的Unix功能似乎在Mono中没有任何支持。
System.Diagnostics.Process
旨在用于Windows系统,因为它只允许将参数作为单个字符串传递,并且没有将输出重定向到特定管道或文件的规定。为了从我的代码到系统调用,引用和取消引用字符串似乎也是鲁莽的。
Mono.Unix.UnixProcess
似乎缺乏创建新流程的能力。
Mono.Unix.Native.Syscall
只有execve()
方法,没有fork()
方法,这是可以理解的,但它仍然让我感到高度干燥。
那么,我该如何实现呢?似乎我唯一的选择是在C中编写一个程序来完成我想要的东西,然后从Mono中调用该程序,但这似乎是一种相当复杂的方法来完成只需要C语言等几行代码的东西。蟒。