아, 비 재진입 함수 문제를 사용하여 지칠대로 지친 신호 처리기를 설명해주십시오 수 있습니다.
문제는 * BSD ping
님의 기능 추가 - 유지자가 처음부터 안전하게 작업을 수행하는 데 방해가된다는 것입니다.
FreeBSD는 1994 년에이 문제를 추가 1996 년에 그것을 발견하고 그것을 밝혀졌다보다
오픈 BSD가 추가 된 1998 년에 언젠가 최종 수정으로 문제를 해결하기 위해 훨씬 짧은 경로 있었어야 시작 이 문제는 1997 년에 발견되었지만 2002 년에 발견되었지만 완전히 문제의 성격을 놓치고 2015 년까지 완전히 수정하지 못했습니다.
NetBSD는 1996 년에이 문제를 추가했지만 발견 했으므로 아직 고쳐졌다. NetBSD는 아마도 OpenBSD ping을 가져와야합니다.
malloc()
도 아니고 STDIO (printf()
포함)도 신호 처리기에 사용되는 모든 코드의 필요에 맞지 않습니다.
더 나은 장소 수십 등등 재진입의 안내, 신호 처리기 문제 등을 찾을 수있다, 그러나 아마이 질문과 대답을 허용 (와는 관련 질문 중 일부는) 좋은 시작이 될 것입니다 :
Why are malloc() and printf() said as non-reentrant?
'triptime'이 상수이고 다른 FP가 없다면 (컴파일시'triptime * 1000.0'이 수행됨), FP 루틴을 최적화하고 FP 지정자를 사용하여'printf()'를 최적화합니다 실패합니다. 그러나 여기에는 거의 컨텍스트가 없기 때문에 이것은 단지 추측 일뿐입니다. – chux
"충돌"이라고 말하면 ping 바이너리, OS 또는 다른 것을 의미합니까? 분명히 3.1 ping (64 비트 타이밍 때문에 다른 최신 NetBSD에서)과 같은 줄로 보입니다. 또한 실행중인 명령 줄과 아키텍처는 무엇입니까? 특정 하드웨어와 관련된 이상한 하드웨어/OS 문제 일 수 있습니다. – abs
질문이 업데이트되었습니다. 지금 확인하십시오. – Twinkle