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

基层建设是哪个网站的赣州是哪个省

基层建设是哪个网站的,赣州是哪个省,电子商务网站建设下载,商城网站建设付款怎么实现go语言将cmd stdout和stderr作为字符串返回而不是打印到控制台 1、直接打印到控制台 从 golang 应用程序中执行 bash 命令,现在 stdout 和 stderr 直接进入控制台: cmd.Stdout os.Stdout cmd.Stderr os.Stderrpackage mainimport ("fmt"…

go语言将cmd stdout和stderr作为字符串返回而不是打印到控制台

1、直接打印到控制台

从 golang 应用程序中执行 bash 命令,现在 stdout 和 stderr 直接进入控制台:

cmd.Stdout = os.Stdout 
cmd.Stderr = os.Stderr
package mainimport ("fmt""log""os""os/exec""time"
)func main() {ok, outString, errString := runBashCommandAndKillIfTooSlow("dir", 2000)fmt.Println("ok")fmt.Println(ok)fmt.Println("outString")fmt.Println(outString)fmt.Println("errString")fmt.Println(errString)
}/*run bash command and kill it if it works longer than "killInMilliSeconds" milliseconds
*/
func runBashCommandAndKillIfTooSlow(command string, killInMilliSeconds time.Duration) (okResult bool, stdout, stderr string) {fmt.Println("running bash command...")fmt.Println(command)// Linux// cmd := exec.Command("sh", "-c", command)// Windowscmd := exec.Command("cmd", "/C", command)cmd.Stdout = os.Stdout // cmd.Stdout -> stdoutcmd.Stderr = os.Stderr // cmd.Stderr -> stderrokResult = trueerr := cmd.Start()log.Printf("Waiting for command to finish...")done := make(chan error, 1)go func() {done <- cmd.Wait()}()select {case <-time.After(killInMilliSeconds * time.Millisecond):if err := cmd.Process.Kill(); err != nil {log.Fatal("failed to kill: ", err)okResult = false}// allow goroutine to exit<-donelog.Println("process killed")case err := <-done:if err != nil {log.Printf("process done with error = %v", err)okResult = false}}if err != nil {log.Fatal(err)okResult = false}return
}

如果 bash 命令太慢( killInMilliSeconds 参数),程序应该保持其终止 bash 命令的能力。

希望 stdout 和 stderr 作为字符串变量从 runBashCommandAndKillIfTooSlow 函数返回,而不立即打印到控

制台,如何实现。

2、不打印到控制台

将输出设置为 strings.Builder 或 bytes.Buffer:

var outbuf, errbuf strings.Builder // or bytes.Buffer
cmd.Stdout = &outbuf
cmd.Stderr = &errbuf

运行命令后,您可以通过调用 Builder.String() 获取字符串形式的标准输出和标准错误:

stdout := outbuf.String()
stderr := errbuf.String()
package mainimport ("fmt""log""os/exec""strings""time"
)func main() {ok, outString, errString := runBashCommandAndKillIfTooSlow("dir", 2000)fmt.Println("ok")fmt.Println(ok)fmt.Println("outString")fmt.Println(outString)fmt.Println("errString")fmt.Println(errString)
}/*run bash command and kill it if it works longer than "killInMilliSeconds" milliseconds
*/
func runBashCommandAndKillIfTooSlow(command string, killInMilliSeconds time.Duration) (okResult bool, stdout, stderr string) {fmt.Println("running bash command...")fmt.Println(command)// Linux// cmd := exec.Command("sh", "-c", command)// Windowscmd := exec.Command("cmd", "/C", command)var outBuf, errBuf strings.Builder // or bytes.Buffercmd.Stdout = &outBufcmd.Stderr = &errBufokResult = trueerr := cmd.Start()log.Printf("Waiting for command to finish...")done := make(chan error, 1)go func() {done <- cmd.Wait()}()select {case <-time.After(killInMilliSeconds * time.Millisecond):if err := cmd.Process.Kill(); err != nil {log.Fatal("failed to kill: ", err)okResult = false}// allow goroutine to exit<-donelog.Println("process killed")case err := <-done:if err != nil {log.Printf("process done with error = %v", err)okResult = false}}if err != nil {log.Fatal(err)okResult = false}stdout = outBuf.String()stderr = errBuf.String()return
}
http://www.yayakq.cn/news/315139/

相关文章:

  • 义乌外贸公司网站沛县建设局网站
  • 合肥城乡建设网站首页怎么通过所有的网站推广广告
  • 企业网站推广宣传方案搜狗网址大全
  • 网站菜单导航制作常见的网络推广方法
  • .net 门户网站wordpress页面修改密码
  • 网站开发招聘网络推广公司名字
  • 好的网站或网页推荐网站和虚拟服务器
  • jsp手机版网站开发建站都需要什么
  • 哪个建站系统好wordpress会员登陆
  • asp无刷新网站模板百度竞价是什么
  • 网站建设交流发言公众号开发实践 pdf
  • wordpress怎么修改网站标题网站服务器连接被重置
  • 网站建设参考文献网站上的链接怎么做
  • sns社交网站源码深圳建设网站的公司
  • 物联网工程就业前景南宁网站排名优化电话
  • 网站建设 后台给人做网站赚钱
  • 建设的网站如何让用户注册做网站时会遇到什么问题
  • 各大网站黑白几天网站APP注册做任务
  • 如何做自己的网站或者论坛积极推进政务网站建设
  • 网站有多难做合肥网站代运营公司有哪些
  • 个人房屋做民宿在哪个网站WordPress用来营销
  • 赵县住房和城乡建设局网站2023年监理招标时间
  • 网站后台栏目管理昆明seo网站排名优化
  • 重庆市建设工程质量网站自贡企业网站
  • 培训教材网站建设广州公司注册多少钱
  • 怎样设置网站关键词优化的近义词
  • pc端网站布局nas可以做视频网站吗
  • 网站维护年费搜索引擎优化是什么意思
  • 广州权威发布百度seo推广怎么做
  • 网站直播怎么做网站建设石家庄快优