golang 接管系统的标准输出
https://pubs.opengroup.org/onlinepubs/009695399/functions/dup.html

nfd, err := syscall.Dup(syscall.Stdout)
	if err != nil {
		panic(err)
	}

	f, err := os.OpenFile("test.log", os.O_WRONLY|os.O_CREATE, 0755)
	if err != nil {
		panic(err)
	}

	if err := syscall.Dup2(int(f.Fd()), syscall.Stdout); err != nil {
		panic(err)
	}

	fmt.Println("test1", nfd, f.Fd())
	//if err := syscall.Dup2(nfd, syscall.Stdout); err != nil {
	//	panic(err)
	//}
	fmt.Println("test2", nfd, f.Fd())

	ttyfd, err := os.OpenFile("/dev/tty", os.O_WRONLY|os.O_CREATE, 0755)
	if err != nil {
		panic(err)
	}
	if err := syscall.Dup2(int(ttyfd.Fd()), syscall.Stdout); err != nil {
		panic(err)
	}
	fmt.Println("test3", nfd, f.Fd(), ttyfd.Fd())

相关文章:

  • 2021-11-09
  • 2021-12-25
  • 2022-12-23
  • 2022-02-14
  • 2021-08-15
  • 2021-09-04
  • 2022-02-20
猜你喜欢
  • 2022-01-01
  • 2022-01-23
  • 2021-10-26
  • 2021-10-09
  • 2022-02-26
  • 2022-03-02
  • 2021-06-15
相关资源
相似解决方案