다중 경로 장치 (/ dev/mapper/mpatha)에서 sg_inq를 호출하려고합니다. sg_inq는 특정 장치에 iScsi 조회를 보내고 일부 데이터를 추출합니다. 나는이처럼 제한 시간 이동의 자신의 exec.commandContext을 사용하고 있습니다 : 공식 가이드exec.CommandContext를 sg_inq sys 명령과 함께 사용하고 timeout이 never를 반환합니다.
ctx, cancel := context.WithTimeout(context.Background(),
time.Duration(1000)*time.Millisecond)
defer cancel()
cmd := exec.CommandContext(ctx, "sg_inq", "/dev/mapper/mpatha")
err := cmd.Run()
cmd.Stdout = &stdout
cmd.Stderr = &stderr
stdErr := stderr.Bytes()
stdOut := stdout.Bytes()
코드 참조 - https://golang.org/pkg/os/exec/#CommandContext가
이 코드는 반환하지 않습니다. 독립 실행 형 스크립트로 실행하면 정상적으로 작동합니다. 하지만 전체 인터페이스의 일부로 실행하면 막히게됩니다. 나는 모든 전화를 "밖"으로 볼 수 있지만 그들 중 아무도 돌아 오지 않는다.
동일한 코드 스 니펫이 독립 실행 형 스크립트에서 작동하지만 전체 클래스에서 작동하지 않는 이유가 있습니까? 아니면 내가 여기서 벗어날 수 있고 그 문제는 완전히 다른 것입니까? 1.9.2 (최신)에서 컴파일 중이지만 1.9.1에서도 시도했습니다.
빌드가 정상적으로 작동하므로 테스트가 통과하므로 모든 것이 작동해야합니다.
"전체 수업"을 참조 할 때 약간의 혼동을 야기하는 최소한의 실례를 보여주십시오. Go에는 수업이 없습니다. :) – biosckon