可以用go语言成功执行shutdown命令吗?怎么做

Python011

可以用go语言成功执行shutdown命令吗?怎么做,第1张

import (

   "bytes"

   "fmt"

   "os/exec"

)

func exec_shell() (string, error){

   //函数返回一个*Cmd,用于使用给出的参数执行name指定的程序

   cmd := exec.Command("shutdown", "-h","now")

   //读取io.Writer类型的cmd.Stdout,再通过bytes.Buffer(缓冲byte类型的缓冲器)将byte类型转化为string类型(out.String():这是bytes类型提供的接口)

   var out bytes.Buffer

   cmd.Stdout = &out

   //Run执行c包含的命令,并阻塞直到完成。  这里stdout被取出,cmd.Wait()无法正确获取stdin,stdout,stderr,则阻塞在那了

   err := cmd.Run()

   return out.String(), err

}

func main(){

   if result,err:=exec_shell()err!=nil{

      fmt.Println("error:",err)

   }else{

      fmt.Println("exec succ ", result)

   }

}

go语言有支持正则表达式后向引用的方法,方法如下

package main

import (

"fmt"

"os"

"path/filepath"

"regexp"

)

func main() {

// 命令行参数

args := os.Args

// 检查参数

if len(args) == 1 {

fmt.Println("ff is a file find tool. use like bottom")

fmt.Println("ff [dir] [regexp]")

return

}

if len(args) <3 {

fmt.Println("args <3")

return

}

fileName := args[1]

pattern := args[2]

file, err := os.Open(fileName)

if err != nil {

fmt.Println(err)

return

}

fi, err := file.Stat()

if err != nil {

fmt.Println(err)

return

}

if !fi.IsDir() {

fmt.Println(fileName, " is not a dir")

}

reg, err := regexp.Compile(pattern)

if err != nil {

fmt.Println(err)

return

}

// 遍历目录

filepath.Walk(fileName,

func(path string, f os.FileInfo, err error) error {

if err != nil {

fmt.Println(err)

return err

}

if f.IsDir() {

return nil

}

// 匹配目录

matched := reg.MatchString(f.Name())

if matched {

fmt.Println(path)

}

return nil

})

}

#include <stdio.h>

#include <stdlib.h>

#include <time.h>//用到了time函数

int main()

{ int i,number

srand((unsigned) time(NULL))//用时间做种,每次产生随机数不一样

for (i=0i<50i++)

{

number = rand() % 101 //产生0-100的随机数

printf("%d ", number)

}

return 0

}