Windows中讀取os.Stdin失敗 : /dev/stdout: Access is denied.

來源:互聯網
上載者:User
### 環境:作業系統:Windows 10 Go Version: go version go1.10.3 windows/amd64### 範例程式碼:```counts := make(map[string]int);os.Stdin.Chmod(os.ModeSetuid)input := bufio.NewScanner(os.Stdin);os.Stdin.WriteString("this is a test")for ; ; {if res := input.Scan(); res {test := input.Text();if test == "exit"{break;}counts[test]++;}else {fmt.Printf("%s", input.Err());break;}}```  在加入os.Stdin.Chmod(os.ModeSetuid)前無法執行成功,加入該行代碼後可以執行成功,錯誤原因:當前所使用的使用者權限不足已讀取os.Stdin,下面是建立標註輸入輸出的源碼:D:/programdata/Golang/src/os/file.go```var (Stdin = NewFile(uintptr(syscall.Stdin), "/dev/stdin")Stdout = NewFile(uintptr(syscall.Stdout), "/dev/stdout")Stderr = NewFile(uintptr(syscall.Stderr), "/dev/stderr"))```  每次在調用os 包的時候都會建立三個全域的變數,本質上是建立三個綁定在std輸出/輸入IO的File對象,所以我們像對待普通的File對象一樣對待os.Stdin即可,將File的userId 設定為自己當前的user Id ,即可擁有讀取許可權。63 次點擊  
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.