gopkg.in/essentialkaos/ek.v3@v3.5.1/system/setprocname.go (about) 1 // +build linux, darwin 2 3 package system 4 5 // ////////////////////////////////////////////////////////////////////////////////// // 6 // // 7 // Copyright (c) 2009-2016 Essential Kaos // 8 // Essential Kaos Open Source License <http://essentialkaos.com/ekol?en> // 9 // // 10 // ////////////////////////////////////////////////////////////////////////////////// // 11 12 import ( 13 "os" 14 "reflect" 15 "unsafe" 16 ) 17 18 // ////////////////////////////////////////////////////////////////////////////////// // 19 20 // SetProcName change current process name 21 // New process name must have same length or less. 22 func SetProcName(name string) { 23 titleStr := (*reflect.StringHeader)(unsafe.Pointer(&os.Args[0])) 24 title := (*[1 << 30]byte)(unsafe.Pointer(titleStr.Data))[:titleStr.Len] 25 26 newTitle := name 27 curTitle := os.Args[0] 28 29 if len(curTitle) > len(newTitle) { 30 spaces := " " 31 newTitle += spaces[:len(curTitle)-len(newTitle)] 32 } 33 34 n := copy(title, newTitle) 35 if n < len(title) { 36 title[n] = 0 37 } 38 }