실행된 프로세스에 대한 대기/바쁨 표시기 생성
exec.Command를 사용하여 npm 패키지를 설치하는 등 Go에서 하위 프로세스를 실행할 때, 출력이 표시되기까지 상당한 시간이 걸릴 수 있습니다. 사용자 경험을 향상하려면 프로세스가 진행 중임을 나타내는 통화 중 표시기를 표시하는 것이 좋습니다.
해결책:
효과적인 해결책 중 하나는 별도의 고루틴을 사용하여 주기적으로 작업을 수행하는 것입니다. 프로세스가 실행되는 동안 점과 같은 문자를 콘솔에 인쇄합니다. 프로세스가 완료되면 표시기 고루틴이 종료될 수 있습니다.
<code class="go">func indicator(shutdownCh <-chan struct{}) { ticker := time.NewTicker(time.Second) defer ticker.Stop() for { select { case <-ticker.C: fmt.Print(".") case <-shutdownCh: return } } } func main() { cmd := exec.Command("npm", "install") log.Printf("Running command and waiting for it to finish...") // Start indicator: shutdownCh := make(chan struct{}) go indicator(shutdownCh) err := cmd.Run() close(shutdownCh) // Signal indicator() to terminate fmt.Println() log.Printf("Command finished with error: %v", err) }</code>
더 시각적으로 매력적인 표시기를 위해 표시기 기능을 수정하여 5:
<code class="go">func indicator(shutdownCh <-chan struct{}) { ticker := time.NewTicker(time.Second) defer ticker.Stop() for i := 0; ; { select { case <-ticker.C: fmt.Print(".") if i++; i%5 == 0 { fmt.Println() } case <-shutdownCh: return } } }</code>
위 내용은 Go에서 실행된 프로세스에 대한 대기/바쁨 표시기를 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!