go build command-line-arguments: copying/tmp/go-build042781492/b001/exe/a.out: open main: text file
2108 단어 golang
go build command-line-arguments: copying /tmp/go-build042781492/b001/exe/a.out: open main: text file busy
build이 완성된 후에 컴파일된 파일을 이전에 생성된 실행 가능한 파일인main을 덮어쓸 때,main 파일이 점용되고, 풀리지 않아서 덮어쓸 수 없다는 뜻입니다.
왜냐하면 나는main을 실행한 후에 코드를 수정했기 때문이다. 다시 build할 때 문제가 발생했다. 이치대로 말하면 이런 문제가 발생하지 않을 것이다. 생각해 보자. 왜냐하면 내가 사용할 때 가상 머신 + 공유 폴더 형식으로 실행되는 linux는 이전에 이 파일 시스템에 의해 삭제되었기 때문이다. 이번 사고도 아마도 이 문제일 것이다.
나는 먼저 윈도우즈에서 테스트를 할 것이다.
package main
import (
"fmt"
"time"
)
func main() {
time.Sleep(30*time.Second)
fmt.Println("2")
}
테스트할 것은 실행 가능한 파일이 실행 중일 때 코드를 수정해서 컴파일에 성공하고 원래의 실행 가능한 파일을 덮어쓸 수 있는지 확인하는 것입니다.
go build main.go
실행 파일main.exe
코드 fmt 수정Println(“3”)
새 창 go build main.go
컴파일링이 통과되었습니다. 오류 없이 실행되는main.exe
결과적으로 첫 번째 출력 2, 두 번째 출력 3은 정상임을 증명했다.
그래서 linux로 돌아가서 공유 디렉터리 이외의 곳에서 테스트 코드를 만듭니다. 제 공유 디렉터리는/data/www/
cd/data
mkdir test
cd test
go mod init test
vi main.go
위의 테스트 코드 입력
같은 테스트 절차를 수행하였는데 발견도 정상적인 것으로 보아 이 원인은 가상 기기 공유 디렉터리 때문인 것 같다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
set containerThere is no built-in set container in Go How to implement Set struct{} => type struct{}{} => 0bytes How to create set :=...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.