我在 Ubuntu 22.04 上使用 .NET 6。以下 Bash 代码的等效 C# 代码是什么?
echo 'Hello, World!' >&3
通常,在 C# 中,我会使用类似 Console.WriteLine("Hello, World!");
的代码写入标准输出。但在这里,我需要写入文件描述符 3 而不是 stdout。
我能够找到一些 Stack Overflow 答案,但它们相当陈旧,并且涉及 Windows API,我认为这不适用于我正在尝试做的事情。
我还应该澄清,对于我的用例,在启动 .NET 进程时将突出输出重定向到另一个文件描述符不是一个选项。这是因为我需要能够出于一个目的写入 stdout,出于另一个目的而写入 stderr,出于另一个目的而写入文件描述符 3。总共三个目的。这是因为该进程必须能够由处理 stdout、stderr 和文件描述符 3 这些方式的框架启动。它需要兼容。
最佳答案
您应该能够通过写入 /proc/self/fd/3
来实现此目的
使用 StreamWriter:
using (StreamWriter outputFile = new StreamWriter("/proc/self/fd/3"))
{
outputFile.WriteLine("Test");
}
否则,您可以使用上面引用的命令进行系统调用来 echo,或者这样...
Process.Start(@"echo Test > /proc/self/fd/3");
关于c# - 如何在 Linux 上的 .NET 6 中写入文件描述符 3 而不是 stdout?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74340745/