3
사용자에게 배포하는 Go 바이너리를 업데이트하기 위해 go-update (https://github.com/inconshreveable/go-update)를 사용하고 있습니다. 현재 실행중인 go 프로그램이 새 버전을 감지하면 사용자에게 프로그램을 종료하고 다시 시작하라는 메시지를 보냅니다.go 바이너리가 스스로 다시로드 할 수 있습니까?
실행중인 go 프로그램이 새 바이너리에서 자체를 다시로드 할 수 있습니까?
이
는 이동 업데이트 이슈 트래커에 요청했지만, 아무 대답 : https://github.com/inconshreveable/go-update/issues/5
https://github.com/rcrowley/goagain/blob/master/goagain.go#L77이 응용 프로그램을 실행 한 프로그램에 의해 os.Args''가짜 실행 파일 이름에 쉽게 가능 실현 마십시오. 이 문제는 * per-se *는 아니지만 높은 권한으로 응용 프로그램을 실행하는 경우 보안 문제가 발생할 수 있습니다. – fuz
@FUZxxl 미리 구운 방법은 모르지만'os.GetPid()'를 사용하여 현재 프로세스 ID를 얻은 다음'/ proc/에있는 실행 파일 경로를 찾아 볼 수 있습니다/exe'. 그리고 나서 이것이 실제로 현재 실행 파일인지 확인할 수 있습니다. –
글쎄, 당신이 리눅스에 묶고 싶다면 ...이 방법은 실제로 이식성이 없다. 대부분의 운영 체제는 실행중인 프로세스의 바이너리 이름이 무엇인지 파악할 수있는 방법을 제공하지만이를 수행하는 방법은 각각 다릅니다. – fuz