Go에서 STDIN 데이터 가용성 감지
코드에서 데이터가 STDIN으로 파이프되는 시기와 실행되는 시기를 구별하는 것이 목표입니다. 터미널에서. 문제는 STDIN이 비어 있을 때 입력을 무기한 기다리는 ioutil.ReadAll()의 차단 특성을 해결하는 데 있습니다.
해결책: os.ModeCharDevice 사용
이 문제를 해결하려면 os.ModeCharDevice를 활용하여 STDIN이 터미널 또는 파이프와 연결되어 있는지 확인할 수 있습니다. 방법은 다음과 같습니다.
package main import ( "fmt" "os" ) func main() { stat, _ := os.Stdin.Stat() if (stat.Mode() & os.ModeCharDevice) == 0 { fmt.Println("data is being piped to stdin") } else { fmt.Println("stdin is from a terminal") } }
설명:
if (stat.Mode() & os.ModeCharDevice) == 0: STDIN 파일 모드에 os.ModeCharDevice 비트 세트가 없는지 확인합니다.
위 내용은 Go의 STDIN 입력이 파이프 또는 터미널에서 오는지 어떻게 알 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!