2015-07-03 2 views
-1

Может ли кто-нибудь показать мне эквивалент при переходе к системе («ясно»); в C? Я хочу очистить консоль через определенный промежуток времени. Заранее спасибосистема («ясно»); эквивалент в Go

EDIT: Это работает для меня в Linux

import "os/exec"

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

+0

Это может помочь: http://stackoverflow.com/questions/19209425/how-can-i -clear-the-console-with-golang-in-windows –

+0

Это действительно помогло, спасибо !!!! работает почти так же, как для Linux – seomis

+0

, поскольку редактирование является решением, а не вопросом, можете ли вы представить его как таковой. – Adeeb

ответ

0

system() в C вызывает внешнюю программу — clear в вашем случае.

Таким образом, эквивалент в Go будет использовать стандартный пакет os/exec, чтобы запустить эту же программу и дождаться завершения ее выполнения.

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") 
} 
2

Функция идти ниже эквивалентна системе C() функции. В дороге вы можете использовать это как:

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 
} 
Смежные вопросы