]> 127.0.0.1 Git - part/.git/commitdiff
31
authorqydysky <qydysky@foxmail.com>
Mon, 3 Aug 2020 06:47:23 +0000 (14:47 +0800)
committerqydysky <qydysky@foxmail.com>
Mon, 3 Aug 2020 06:47:23 +0000 (14:47 +0800)
Exec.go

diff --git a/Exec.go b/Exec.go
index 7ce2865905a7da85da5054a27698447df44e75a4..0e0199f5c521fa72ddc23776e5ac8d11e0b3bbb5 100644 (file)
--- a/Exec.go
+++ b/Exec.go
 package part
 
 import (
-       "os"
-       "bufio"
-       // "fmt"
        Ppart "github.com/qydysky/part/linuxwin"
-       "io"
        "os/exec"
-       "errors"
-       "strings"
 )
 
-func Log (cmd *exec.Cmd,filename string) error {
-       var newpath func(string) error = func (filename string)error{
-               /*
-                       如果filename路径不存在,就新建它
-               */      
-               var exist func(string) bool = func (s string) bool {
-                       _, err := os.Stat(s)
-                       return err == nil || os.IsExist(err)
-               }
-       
-               for i:=0;true;{
-                       a := strings.Index(filename[i:],"/")
-                       if a == -1 {break}
-                       if a == 0 {a = 1}//bug fix 当绝对路径时开头的/导致问题
-                       i=i+a+1
-                       if !exist(filename[:i-1]) {
-                               err := os.Mkdir(filename[:i-1], os.ModePerm)
-                               if err != nil {return err}
-                       }
-               }
-               
-               if _, err := os.Stat(filename); os.IsNotExist(err) {
-                       fd,err:=os.Create(filename)
-                       if err != nil {
-                               return err
-                       }else{
-                               fd.Close()
-                       }
-               }
-               return nil
-       }
-       if err:=newpath(filename);err != nil {return err}
+type lexec struct {}
 
-       fd, err := os.OpenFile(filename, os.O_RDWR | os.O_EXCL, 0755)
-       if err != nil {return err}
-
-       wb := bufio.NewWriter(fd)
-       
-       var w func(string) = func(s string) {
-               _, err2 := wb.WriteString(s+"\n")
-               if err2 != nil {
-                       Logf().E(err2.Error())
-               }
-       }
-       defer func(){
-               w("Log stop!")
-               wb.Flush()
-               fd.Sync()
-               fd.Close()
-       }()
-
-       w("Log start!")
-       var s string
-       for _,v:= range cmd.Args {
-               s+=v+" ";
-       }
-       w("cmd: "+s)
-
-       stdout, err := cmd.StdoutPipe()
-
-       if err != nil {
-               w(err.Error())
-               return errors.New(err.Error())
-       }
-
-       Startf(cmd)
-
-       reader := bufio.NewReader(stdout)
-
-       for {
-               line, err2 := reader.ReadString('\n')
-               if err2 != nil || io.EOF == err2 {
-                       break
-               }
-               w(line)
-       }
-
-       if err:=cmd.Wait();err !=nil{return err}
-       return nil
+func Exec() *lexec{
+       return &lexec{}
 }
 
-func Run(hide bool,prog string,cmd ...string){
+func (this *lexec) Run(hide bool,prog string,cmd ...string){
     Ppart.PRun(hide,prog,cmd ...)
 }
 
-func Startf(pro ...*exec.Cmd){
+func (this *lexec) Startf(pro ...*exec.Cmd){
     Ppart.PStartf(pro)
 }
 
-func Stop(pro ...*exec.Cmd){
+func (this *lexec) Stop(pro ...*exec.Cmd){
     for i := range pro {
         pro[i].Process.Kill()
     }
-}
-
-func Cmd () {
-
 }
\ No newline at end of file