신중하게 읽으십시오. signal(7), signal-safety(7) 및 sigaction(2). sa_restorer
은 더 이상 사용되지 않으며 사용자는이를 사용할 수 없습니다.
올바르게 작동시키는 방법은 무엇입니까?
그래서
YouCompleteMe는을 표시되지에서
올바른 (영리!)
입니다. (귀하의 질문은해야합니다 : "어떻게 YouCompleteMe이 sa_restorer
를 숨길 수있을만큼 영리하다?")이
더 흥미로운 질문이 sa_restorer
분명히 예에 표시하면서이 표시되지 않는 이유입니다 /usr/include/x86_64-linux-gnu/bits/sigaction.h
,하지만 이것은 다른 질문입니다 (그리고 나는 그 답을 모른다). 나는 당신이 , 특히 표준 함수 (예 : 그들에 관한 몇 가지 구성 파일을 가지고있다)를 완성하면 놀라지 않을 것이다. BTW YouCompleteMe은 free software 또는 open source이므로 소스 코드을 연구 할 수 있습니다.
sa_restorer
의 유형이다 __sigrestore_t
(/usr/include/asm-generic/signal.h
참조) 및 밑줄로 시작 식별자 이행 예약되어 YouCompleteMe 아마도 이러한 필드 또는 데이터를 스킵되도록 사용자 코드에 의해 사용되어서는 안된다. 이것은 단지 추측 일뿐입니다. YouCompleteMe 소스 코드를 직접 확인하십시오 (그리고 아마도 libclang
과 같은 다른 도구의 코드 일 수도 있습니다).
는 내가 정말 물어보고 싶은 것은 youcompleteme, 내 리눅스 시스템에서
이 sa_handler
매크로는 sa_sigaction이 같은 날 (내부적으로 <signal.h>
에서 포함) /usr/include/x86_64-linux-gnu/bits/sigaction.h
이후은 sigaction의 더 많은 회원을 표시 할 수 없습니다 이유 다음을 포함합니다 : # define sa_handler __sigaction_handler.sa_handler
ComplecomMe가 완료 메뉴의 모든 매크로를 표시하지 않으면 놀랄 일이 아닙니다. 그들 중 너무 많습니다! 이것은 sa_handler
이 완료를 위해 명시 적으로 제안되지 않은 이유를 설명합니다.
귀하의 struct sigaction
만 문서이 알 것입니다
은 (당신이 siga.sa_
를 입력하면 아마도 completer 더 현명 할 수 있고 는sa_handler
을 제안하지만 시도하지 않았다). 실제 구현은 더 복잡합니다. YouCompleteMe의 행동을 이해하고 이해하기를 원한다면 그것을 공부하십시오. 패치를 제안하십시오. (몇 주 또는 몇 달간 작업) to YouCompleteMe 그 행동을 개선하려면 패치를 제안하십시오.
YouCompleteMe의 향후 패치는 밑줄로 시작하는 식별자와이를 사용하는 선행 처리기 매크로를 처리 할 수 있습니다. 흥미로운 프로젝트이지만 몇 달이 걸릴 수도 있습니다.
'sa_restorer' 필드는 더 이상 사용되지 않으며 지정되지 않습니다. 당신의'youcompleteme'은 그것을 보여주지 못하는 것이 맞습니다. –
나는 그것을 알기를 원합니다. 나는 당신이 왜 제대로 작동하지 못하는지 알고 싶습니다. – cong
그것은 정확하고 영리하게 작동합니다. 당신이 그것을 사용할 수 없기 때문에'sa_restorer'을 보여 주면 안됩니다. –