[英]running bash piped comand from mono linux
我正在嘗試使用mono process start與管道運行bash命令
這是我正在嘗試的代碼片段
單個命令有效,但是管道命令無法運行,我在這里缺少什么?
ProcessStartInfo oInfo = new ProcessStartInfo(command, args);
oInfo.UseShellExecute = false;
oInfo.CreateNoWindow = true;
oInfo.RedirectStandardOutput = true;
oInfo.RedirectStandardError = true;
StreamReader srOutput = null;
StreamReader srError = null;
Process proc = System.Diagnostics.Process.Start(oInfo);
proc.WaitForExit();
我嘗試運行“ ps -aux”,它運行良好。 但是ps -aux | grep gnome命令失敗。
我嘗試了這些場景場景1:命令= ps參數= -aux | grep gnome
方案2:命令= ps參數=“ -c'-aux | grep gnome'”
方案3:
命令= ps參數=“ -c \\” -aux | grep gnome \\“”
所有這些都失敗了
錯誤:垃圾選項
用法:ps [選項]
嘗試使用“ ps --help”或“ ps --help”以獲取其他幫助文本。
另外,在另一個問題上,我嘗試執行此操作的原因是要弄清楚某個特定的守護程序已在運行。 是否有獲取此信息的標准方法。 例如在Windows中,我們可以使用ServiceController.GetServices()查詢正在運行的服務。
在mono / Linux上可以直接使用類似的東西嗎?
當您添加“ |”時 在bash行中,bash解釋器將命令分為兩個進程,並將輸出從一個進程反饋到另一個進程,當您使用Process調用該命令時,它將按原樣發送參數。
您可以實現的最接近的目標是開始這兩個過程,並通過輸入/輸出流將一個過程的另一個輸出饋入。
關於問題的第2部分,如果程序以特權身份運行,則Process.GetProcesses將列出系統所包含的守護程序中所有正在運行的進程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.