c# - 某些 Git 命令没有输出 C# 进程
问题描述
只有一些命令对标准输出和标准错误产生任何输出。另外,我读过在两个流上调用 ReadToEnd 可能会导致死锁?如果有人知道一种更安全的方式来读取流,那将不胜感激。以下是我如何运行该过程并获取输出。问题是 fetch 的输出是空的(fetching 命令确实有效,只是不提供输出),但对于 pull 等其他命令则不然。
ProcessStartInfo psi= new ProcessStartInfo();
psi.CreateNoWindow = true;
psi.RedirectStandardError = true;
psi.RedirectStandardOutput = true;
psi.FileName = "git.exe";
psi.UseShellExecute = false;
psi.WorkingDirectory = workingDir;
psi.Arguments = "fetch -v";
Process fetchProcess = new Process();
fetchProcess.StartInfo = psi;
fetchProcess.Start();
string err = "";
string stdout = "";
//Both standard error and stdout are empty. But if argument is
// a git pull, then standard error and output are not empty.
using (StreamReader myOutput = fetchProcess.StandardOutput) {
stdout = myOutput.ReadToEnd();
}
using (StreamReader myError = fetchProcess.StandardError) {
err= myError .ReadToEnd();
}
fetchProcess.WaitForExit();
fetchProcess.Close();
无论如何要确保输出获取结果?
解决方案
推荐阅读
- r - 根据来自另一个数据帧的特定行的总和来改变一列
- css - react-bootstrap-table 自动列宽
- c# - 在c#中读取表存储数组
- python - 如何使 QCombobox 可扩展用于分层项目?(PyQT5)
- python - Python:创建一个从 A 到 Z 的空字典,没有 J 和 Y
- jquery - WooCommerce 在数量选择更改时显示价格
- java - 在 QueryContext Oracle 的数字 varchar 字段中附加前导零
- wordpress - 在 bitnami 堆栈应用程序中缺少 Properties.ini 文件
- google-sheets - 将公式转换为数组公式
- spring - 如何使用 Spring boot 使用 Active Directory LDAP 只是为了找到一个用户,不需要对他进行身份验证