簡體   English   中英

從mono linux運行bash管道comand

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM