当前位置: 首页 > news >正文

前端怎么接私活做网站苏州网站设计网站

前端怎么接私活做网站,苏州网站设计网站,建设网站的优势,移动网站建设价格便宜想要实现的效果,程序通过Process类一次启动cmd,后台线程每隔一定时间,向其输入命令,获得并处理输出。 一、基本操作 首先,通常操作的例子一抓一大把: 1、通过Process启动cmd执行一条/多条(&am…

        想要实现的效果,程序通过Process类一次启动cmd,后台线程每隔一定时间,向其输入命令,获得并处理输出。

一、基本操作

        首先,通常操作的例子一抓一大把:

1、通过Process启动cmd执行一条/多条(&&连接)命令;

2、退出(一条时可以在命令开头加“/c”自动退出,或多条时最后输入exit退出);

3、获取输出(可以一行行读,或者“读到末尾”,这里划重点)。

二、多次输入输出

        首先,Process的启动值创建出来:

ProcessStartInfo psi = new ProcessStartInfo()
{FileName = "C:\\Windows\\System32\\cmd.exe",UseShellExecute = false,RedirectStandardOutput = true,RedirectStandardInput = true,RedirectStandardError = true,CreateNoWindow = true,
};

        然后后台启动,开始进行输入:

Task.Factory.StartNew(o =>
{ProcessStartInfo psi = new ProcessStartInfo(){FileName = "C:\\Windows\\System32\\cmd.exe",UseShellExecute = false,RedirectStandardOutput = true,RedirectStandardInput = true,RedirectStandardError = true,CreateNoWindow = true,};using (var _cmd = Process.Start(psi)){_cmd.StandardInput.AutoFlush = true;while (true){Thread.Sleep(2000);GetSocketPair();}}
}, this, null, TaskCreationOptions.LongRunning, TaskScheduler.Default);//你的代码,笔者这里是要获取当前进程下TCP连接数量
private void GetSocketPair()
{if (_cmd == null) return;string cmd = $"netstat -ano | findstr {Process.GetCurrentProcess().Id} |findstr TCP |find /C /V \"\"";string socketPairCount = WriteCmd(cmd);
}//输入并获取输出的核心逻辑
private string WriteCmd(string cmd)
{//重点1,自定义结束符号string suffix = "###";string output = "";//一行命令变两行,主要使用自定义结束符号,作为输入的结束标志,同样也是输出的起始标志(在正则匹配时)if (!cmd.EndsWith(suffix))cmd += $"&& echo {suffix}";_cmd.StandardInput.WriteLine(cmd);string line = "";//重点2,不能通过_cmd.StandardOutput.EndOfStream作为while的条件,因为程序未exit退出,不在流的末尾,该状态一直为false//输出的结束标志,此时第二条echo自定义结束符号的命令已执行完毕while(!line.StartsWith(suffix)){//重点3,不能通过_cmd.StandardOutput.ReadToEnd读取内容,与重点2原理相同,ReadToEnd需要流结束了才可以line = _cmd.StandardOutput.ReadLine();if (!string.IsNullOrEmpty(line))output += line+"\r";}if (timerSmp.CurrentCount == 0)timerSmp.Release();Regex r = new Regex(@"###.*###");string result = r.Match(output).Value;//掐头去尾回车符号\rresult = result.Replace(suffix, "").TrimStart('\r').TrimEnd('\r');return result;
}

        同样的,后台线程启动后,其他线程也可以调用WriteCmd方法执行指令,不过要注意线程安全,主要可能的问题是输出返回给错误的调用方。

        如有多线程的需要,可以通过使用lock(await/async异步方法中不适用)、信号量等线程同步基元以保证线程安全。

http://www.yayakq.cn/news/336660/

相关文章:

  • 网站建设要学会什么软件做网站需求 后期方便优化
  • 外贸网站如何做推广怎么样最好的建站网站
  • 来年做那些网站致富大连金广建设集团
  • 查看域名之前做的网站做一个网站成本大概多少钱
  • 金乡做网站自己做的网站怎么在移动端访问
  • 福建老区建设网站线上推广员
  • 建造免费网站大设计师论坛网页设计
  • jquery做网站浏览量销售管理系统哪种好一点
  • asp+网站开发什么是网络营销中的广告联盟
  • 网站排名下降原因做html网站搜索框教程
  • 网站开发代做道滘仿做网站
  • 有没有做q版头像的网站百度软文推广公司
  • 电商设计素材网站推荐做爰网站名称
  • 网站域名申请程序石家庄市工程建设造价管理站网站
  • 企业做网站400电话作用网站建设售后服务承诺函
  • cnnic 网站phpstudy 网站空白
  • 学做网站多少钱html5网页制作代码大全
  • 怎样做百度推广网站wordpress存档:
  • 免费搭建个人业务网站深圳民治网站建设
  • 塔里木油田公司档案馆网站建设研究管理部门网站建设说明书
  • 口碑好的东莞网站建设东莞专业设计网站
  • wordpress 总站模板网站建设-英九网络
  • 有关网站建设的参考文献网站建设的种类
  • 网站如何知道是谁做的呢百度推广运营工作是什么
  • 网站访问找不到域名怎么回事全国网站建设哪家好
  • 网站开发制作的流程有哪些全球影响力最大的人
  • 聊城建设银行官方网站江门网站自助建站
  • 深圳做网站 信科便宜商务网站建设的可行性分析包括
  • 广州网站设计服务商广告公关公司
  • 电子商务网站建设与管理实验总结都匀网站制作公司