9:golang的Command一次执行多条命令

aside section._1OhGeD · · 4308 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

func DecodeFts(cipherpath, ftspath, password string) (err error) {
    if len(password) != 7 {
        return
    }
    log.Println(ftspath, filepath.Dir(ftspath), filepath.Base(ftspath))
    os.Chdir(filepath.Dir(ftspath))
    cmd := exec.Command(cipherpath, filepath.Base(ftspath))
    inr, inw := io.Pipe()
    outr, outw := io.Pipe()
    cmd.Stdin = inr
    cmd.Stdout = outw
    if err = cmd.Start(); err != nil {
        return
    }
    go cmd.Wait()
    strs := []string{
        "PRAGMA key = '" + password + "';",
        "PRAGMA cipher = 'aes-256-cbc';",
        "PRAGMA cipher_use_hmac = ON;",
        "PRAGMA cipher_page_size = 4096;",
        "PRAGMA kdf_iter = 64000;",
        ".backup fts_de.db",
        ".q",
    }
    for _, str := range strs {
        _, err = encode(bufio.NewReader(outr), inw, str)
        if err != nil {
            log.Println(err.Error())
            return err
        }
    }
    return
}
func encode(r *bufio.Reader, w io.Writer, str string) (string, error) {
    n, err := w.Write([]byte(str))
    if err != nil {
        log.Println(n, err.Error())
        return "", err
    }
    n, err = w.Write([]byte("\n"))
    if err != nil {
        log.Println(n, err.Error())
        return "", err
    }
    return "", err
}

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:aside section._1OhGeD

查看原文:9:golang的Command一次执行多条命令

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

4308 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传