c# - 检索 shell 脚本退出代码(返回值)
问题描述
尝试验证 Logstash 配置文件。从 Windows 命令行运行以下行时:
C:> C:\Logstash\bin\logstash -t -f C:\Logstash\config\my.config
然后我可以使用检查结果
echo %errorlevel%
在语法错误的情况下返回 1。现在我想在 C# 中以编程方式执行此操作,所以:
using System.Diagnostics;
var logstashProcess = Process.Start(@"C:\Logstash\bin\logstash", @"-t -f C:\Logstash\config\my.config");
logstashProcess.WaitForExit();
return logstashProcess.ExitCode == 0;
问题是它总是返回 true(退出代码为零)——即使配置文件完全搞砸了。
我的猜测:因为C:\Logstash\bin\logstash
是一个 shell 脚本,所以我得到的零是 shell 本身成功运行 - 而不是 Logstash 进程(使用 jruby 从该脚本中执行)。关于如何获得真正的回报值的任何想法?批处理文件可以工作吗?(此时我不想在聚会中添加额外的脚本)
解决方案
推荐阅读
- python - 在 Django 中验证动态表单的最简洁方法是什么?
- typescript - 当成员之一存在时,具有可选成员的通用映射类型约束不约束
- r - 如何在 R 闪亮的滑块输入中添加“下一步”按钮?
- java - 使用按钮从片段到活动。安卓工作室
- unidata - 使用 uniobject.NET 连接到 unidata 帐户的连接不起作用并且事务失败
- android - 有没有办法使用 adb 禁用应用程序的互联网连接?
- powerbi - 矩阵中总计的条件显示
- hadoop - 我们如何删除具有底层文件结构的 HIVE 表,而不破坏同一路径下的另一个表?
- ios - 何时调用 recordZoneWithIDWasPurgedBlock 和 recordZoneWithIDWasDeletedBlock?
- c - 为什么进入if语句后变量var的值是1?