调用cmd只能用流数据实时获取输出内容,同步输入输出不及时处理一样会堵塞,但你可以改动代码采用异步的方式,下面的实现方式和socket的方法一样,其他语言也是一样的思路。
public class ApiCmd
{
public int time=100;//随时设置等待时间
public ApiCmd(int _time=100) { time = _time; }
public const int ReadSize = 2048;//缓冲区大小
private Encoding encoding;//字符编码
private Process cmd;//cmd进程
public event Action Exited;//退出事件
public event Action<string, StreamWriter> output;//输出事件
private byte[] ReadBuffer = new byte[ReadSize];//缓冲区
private List<byte> ReadList = new List<byte>();//暂存区
public void Start()
{
cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.UseShellExecute = false;//是否使用操作系统shell启动
cmd.StartInfo.RedirectStandardInput = true;//接受来自调用程序的输入信息
cmd.