簡體   English   中英

C#正在處理Linux命令輸出

[英]C# Piping Linux Command Output in Process

我在使用Process類在Linux系統上通過管道傳遞命令時遇到麻煩。

我要執行以下命令: rpm2cpio repo.rpm | cpio -divm rpm2cpio repo.rpm | cpio -divm

我試過了

process.StartInfo.FileName = "rpm2cpio;
rocess.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.Arguments = "repo.rpm | cpio - idmv";

但是程序掛起。

同樣,我嘗試將rpm2cpio的輸出保存到字符串或輸出文件,然后將其作為cpio命令的參數傳遞,但它也會掛起。

process.StartInfo.FileName = "cpio";
rocess.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;

process.StartInfo.Arguments = "-idvm < output.txt";
// or
process.StartInfo.Arguments = "-idvm < " + rp2cpio_output;

我可以通過哪些方式使它正常工作? 我看到這個帖子了一個解決方案,但它是一個窗口的系統上。 在Linux上如何做同樣的事情?

設置process.StartInfo.RedirectStandardOutput=true將導致程序將標准輸出重定向到流process.StartInfo.StandardOutput 發生這種情況時,程序將掛起,直到您從標准輸出中讀取。

為了獲得我認為您正在尋找的行為,您只需要設置RedirectStandardOutput=false 這樣,命令中的管道和重定向將按預期工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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