開発環境
- macOS Catalina - Apple (OS)
- Emacs (Text Editor)
- Windows 10 Pro (OS)
- Visual Studio Code (Text Editor)
- Go (プログラミング言語)
Go Systems Programming: Master Linux and Unix system level programming with Go (渋川 よしき(著)、ごっちん(イラスト)、ラムダノート)、第3章(低レベルアクセスへの入り口2:io.Reader)、3.9(問題)、Q3.2(テスト用の適当なサイズのファイルを作成)の解答を求めてみる。
コード
package main
import (
"crypto/rand"
"errors"
"fmt"
"io"
"os"
)
func eprintln(err error) {
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
}
func main() {
if len(os.Args) < 2 {
eprintln(errors.New("usage: randfile filename"))
}
file, err := os.Create(os.Args[1])
eprintln(err)
_, err = io.CopyN(file, rand.Reader, 1024)
eprintln(err)
}
入出力結果(Zsh、PowerShell、Terminal)
% go build
% ./randfile
usage: randfile filename
% ./randfile temp.dat
% ls -l temp.dat
-rw-r--r-- 1 kamimura staff 1024 7 11 16:50 temp.dat
% ls -hl temp.dat
-rw-r--r-- 1 kamimura staff 1.0K 7 11 16:50 temp.dat
%
0 コメント:
コメントを投稿