系统("清除&#34);相当于Go

时间:2015-07-03 18:30:34

标签: go

任何人都可以向我展示系统中的等价物(" clear");在C?我想在一段时间后清理控制台。提前致谢

编辑:这在Linux中适用于我

import "os/exec"

// Method body
clear := exec.Command("clear")
clear.Stdout = os.Stdout
clear.Run()

3 个答案:

答案 0 :(得分:2)

下面的go函数等同于C system()函数。你可以使用它:

import "system"

...
    exitstatus := system.System("clear")

以下是Go代码:

package system

import (
        "os"
        "os/exec"
        "syscall"
    )

func System(cmd string) int {
    c := exec.Command("sh", "-c", cmd)
    c.Stdin = os.Stdin
    c.Stdout = os.Stdout
    c.Stderr = os.Stderr
    err := c.Run()

    if err == nil {
        return 0
    }

    // Figure out the exit code
    if ws, ok := c.ProcessState.Sys().(syscall.WaitStatus); ok {
        if ws.Exited() {
            return ws.ExitStatus()
        }

        if ws.Signaled() {
            return -int(ws.Signal())
        }
    }

    return -1
}

答案 1 :(得分:0)

C中的

system()会调用外部程序 - clear

因此Go中的等价物将使用os/exec标准包来生成相同的程序并等待它完成执行。

答案 2 :(得分:0)

您可以使用stdlib.h的几行来调用go中的C系统函数:

package main

// #include <stdlib.h>
//
// void clear() {
//  system("clear");
// }
import "C"
import (
    "fmt"
    "time"
)

func main() {
    fmt.Println("Hello")
    fmt.Println("World")
    fmt.Println("Golang")

    time.Sleep(time.Second * 5)

    C.clear()

    fmt.Println("Screen is cleared")
}