c# - C# 进程:使用管道/文件描述符
问题描述
我正在尝试以与 Puppeteer 在 NodeJS 中相同的方式连接到 Chromium 。
这在 NodeJS 中看起来超级简单。您向 stdio 数组添加了另外两个参数,您就有了管道。
我无法在Puppeteer-Sharp中实现相同的逻辑。我花了一些时间在这里阅读了许多问题和答案。我读到了 AnonymousPipeServerStream,但并不高兴。
这是我无法使其工作的一个示例:
AnonymousPipeServerStream streamReader = new AnonymousPipeServerStream(PipeDirection.In, HandleInheritability.Inheritable);
AnonymousPipeServerStream streamWriter = new AnonymousPipeServerStream(PipeDirection.Out, HandleInheritability.Inheritable);
var chromeProcess = new Process();
chromeProcess.EnableRaisingEvents = true;
chromeProcess.StartInfo.UseShellExecute = false;
chromeProcess.StartInfo.FileName = "/.local-chromium/MacOS-536395/chrome-mac/Chromium.app/Contents/MacOS/Chromium";
chromeProcess.StartInfo.Arguments =
"--MANY-MANY-ARGUMENTS " +
"--remote-debugging-pipe " +
"--user-data-dir=/var/folders/0k/4qzqprl541b74ddz4wwj_ph40000gn/T/mz0trgjc.vlj " +
"--no-sandbox " +
"--disable-dev-shm-usage " +
streamReader.GetClientHandleAsString() +
streamWriter.GetClientHandleAsString();
chromeProcess.Start();
streamReader.DisposeLocalCopyOfClientHandle();
streamWriter.DisposeLocalCopyOfClientHandle();
Task task = Task.Factory.StartNew(async () =>
{
var reader = new StreamReader(streamReader);
while (true)
{
var response = await reader.ReadToEndAsync();
if (!string.IsNullOrEmpty(response))
{
Console.WriteLine(response);
}
}
});
Console.ReadLine();
许多示例表明您必须将 theGetClientHandleAsString()
作为参数传递,但我看不出它如何连接到进程。
这是完整示例的要点
解决方案
答案在于从Process
具有,和/或属性集的 aProcessStartInfo
开始,然后使用,和/或属性来访问管道。RedirectStandardInput
RedirectStandardOutput
RedirectStandardError
Process.StandardInput
Process.StandardOutput
Process.StandardError
推荐阅读
- r - R - 更改图例标签
- scala - 如何使用 Scala 2.11.8 在 Spark REPL 中启用部分统一?
- sql - 语法错误:GROUP BY 子句不能包含聚合或窗口函数
- typescript - 确保接口的类型 T 是实现它的类
- react-native - React Native - 为 useSelector 设置一个简单的变量
- python - 给定 python 中的天、月和小时列表,如何找到最小值?
- ios - 自 Xcode 11.4 以来的状态栏样式问题
- flutter - 如何在 CurvedNavigationBar 上刷新图标颜色
- vue.js - 转到定义不适用于我的项目(vue 和 sass 文件)[visual-studio-code]
- python - 如何将基于索引的公式分配给 sympy 上张量的每个索引位置