C# 如何打开/使用文件描述符

C# 如何打开/使用文件描述符,c#,file-io,stdout,stdin,file-descriptor,C#,File Io,Stdout,Stdin,File Descriptor,我有一个特别的问题,我有一些程序,我不能修改,但它提供了一些功能,我想在办公室内使用。因此,我正在为Office编写一个插件,它接收我的文档,在后台执行程序,将文档放在stdin上。程序写入标准输出,我把它带回程序进行后期处理 这一切都很好,除了程序要求输入密码,我不想输入stdin。该工具可以从任何其他输入流中读取密码,但需要读取的文件描述符的编号 因此,我的问题是:如何(在.net环境中)在文件描述符上打开一个可以作为该程序参数的数字流?理想情况下,我想写一些东西,比如: process.s

我有一个特别的问题,我有一些程序,我不能修改,但它提供了一些功能,我想在办公室内使用。因此,我正在为Office编写一个插件,它接收我的文档,在后台执行程序,将文档放在stdin上。程序写入标准输出,我把它带回程序进行后期处理

这一切都很好,除了程序要求输入密码,我不想输入stdin。该工具可以从任何其他输入流中读取密码,但需要读取的文件描述符的编号

因此,我的问题是:如何(在.net环境中)在文件描述符上打开一个可以作为该程序参数的数字流?理想情况下,我想写一些东西,比如:

process.start("start-program --password-fd " + x);
stream = new StreamWriter(x);
stream.write("secritpwd");
等等。。(但后来神奇地纠正了,这样它就能工作了;)

我希望有人能帮助我


谢谢

文件描述符不是Windows的一部分-它们是C运行时库的一部分。你必须在C或C++中写一个DLL来做你的文件I/O,然后从你的C程序中调用它。从C DLL获取文件描述符编号,以传递给其他代码。

文件描述符不是Windows的一部分,而是C运行时库的一部分。你必须在C或C++中写一个DLL来做你的文件I/O,然后从你的C程序中调用它。从C DLL中获取要传递给其他代码的文件描述符编号。

此链接将帮助您启动并从以下位置获取逻辑:


Maby此链接将帮助您从以下位置开始并获取逻辑:


我不确定这个应用程序所说的“文件描述符”到底是什么意思,但您可以传递可继承匿名管道的句柄。看见(这假设您至少在.NET 3.5上。)

基本大纲如下:

  • 实例化匿名PipeServerStream
  • 将管道句柄(
    pipeServer.getclienthandleastring()
    )作为命令行参数传递给C可执行文件
  • 写入匿名PipeServerStream

我不确定这个应用程序所说的“文件描述符”到底是什么意思,但您可以传递可继承匿名管道的句柄。看见(这假设您至少在.NET 3.5上。)

基本大纲如下:

  • 实例化匿名PipeServerStream
  • 将管道句柄(
    pipeServer.getclienthandleastring()
    )作为命令行参数传递给C可执行文件
  • 写入匿名PipeServerStream

这似乎仅在Vista、Server 2008或更高版本上受支持。此外,这些文件ID是否与C运行时文件描述符相同?似乎只有Vista、Server 2008或更高版本才支持这一点。另外,这些文件ID是否与C运行时文件描述符相同?谢谢您这么做。我不想告诉你,为了让它真正工作,你需要告诉管道的构造函数它可以被其他进程继承。谢谢你这么做。我不想告诉你,要真正让它工作,你需要告诉管道的构造函数,它可以被其他进程继承。