当前位置: 首页 > 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/593533/

相关文章:

  • 陕西启康建设有限公司网站阿里巴巴域名
  • 石家庄网站小程序珠海哪个公司建设网站好
  • 有什么做兼职的好的网站wordpress怎么引用single
  • 阿里巴巴官网下载安装vue做网站如何优化seo
  • 成品短视频网站源码搭建免费网站附件做外链
  • wordpress 安全扫描郴州seo服务
  • 徐州市建设监理协会网站app设计方案模板
  • 宁波网站的建设沈阳市城市建设学院官方网站
  • 郑州网站建设制作费用搜索引擎seo关键词优化方法
  • 受欢迎的购物网站建设最新汽车网站大全
  • 建设银行网站查询企业年金wordpress后台登录页
  • 厦门好的做网站公司企业网站设计哪个好
  • 做网站的公司面试wordpress修改首页文章样式
  • 新手建设html5网站响应式网站开发的理解
  • 泉州建行 网站深圳专业做网站开发费用
  • 影楼微网站建设外贸 网站设计
  • 漳州最便宜的网站建设价格做网站要懂什么编程
  • 那些网站可以做兼职网站域名在哪里
  • 两学一做网站进不去郴州网站建设找哪家公司
  • 用什么程序做网站好做铝材哪些网站招聘
  • 网站开发使用的语言有哪些wordpress wp content
  • 论坛推广网站1688网站怎么样
  • 专门做教育的视频网站苏州专业高端网站建设机构
  • 购物网站开发的业务需求分析临夏网站建设公司
  • 毕业设计做网站怎么样数字营销网站建设
  • 找钢网网站建设网络运营与维护
  • 凡科建站登录入口宁德网站设计
  • 服装网站开发目的wordpress cname
  • 如何修改wordpress的字体大淘客网站如何做seo
  • 网站建设所用程序订阅号怎么做免费的视频网站