2017-09-04 9 views
-2

sigaction completionyoucompleteme는 youcompleteme은 다음과 같은 멤버를 (할 수 있습니다 제대로 완료되지은 sigaction 구조체는 물론이 sa_restorer 요소가 무효이며, 사용하지 않아야 것을 알 수 있습니다, 당신은 위의 볼 수 있듯이 제대로

완료되지은 sigaction 구조체 수) :

sigaction members

그래서, 내 youcompleteme 문제 있나요? 제대로 작동시키는 방법?

참고 : 정말로 묻고 싶은 것은 왜 저에게 sa_hander와 같은 sigaction 회원을 더 많이 표시 할 수는 없지만 sa_restorer, sa_mask 및 sa_flags 뿐이라는 것입니다.

+1

'sa_restorer' 필드는 더 이상 사용되지 않으며 지정되지 않습니다. 당신의'youcompleteme'은 그것을 보여주지 못하는 것이 맞습니다. –

+0

나는 그것을 알기를 원합니다. 나는 당신이 왜 제대로 작동하지 못하는지 알고 싶습니다. – cong

+0

그것은 정확하고 영리하게 작동합니다. 당신이 그것을 사용할 수 없기 때문에'sa_restorer'을 보여 주면 안됩니다. –

답변

1

신중하게 읽으십시오. 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 YouCompleteMefree 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의 향후 패치는 밑줄로 시작하는 식별자와이를 사용하는 선행 처리기 매크로를 처리 할 수 ​​있습니다. 흥미로운 프로젝트이지만 몇 달이 걸릴 수도 있습니다.

+0

내게 sa_handler 나 sa_flags 나 다른 멤버들을 보여줄 수없는 이유는 무엇입니까? – cong

+0

그것은 다른 질문입니다. 아마도 YouCompleteMe 개발자에게 버그 요청을 채워달라고 요청할 것입니다. BTW on my Linux'sa_handler'는'# define'-d 매크로입니다. –

+0

그래서, 그게 해결할 수없는 문제라는 건가요? – cong