2012-08-22 3 views

답변

1

이 예제 코드는 변경 내용을 해당 코드 섹션 또는 해당 코드 섹션에서 호출 된 코드로만 지역화하는 데 사용됩니다.

신호가 더 이상 안전하지 않으므로 안전 신호를 우회하는 코드 외부에서 코드가 실행되지 않는다고 100 % 보장 할 수는 없습니다. 이 예제에서 시간 초과되는 호출은 DBI-> connect입니다. 대부분의 DBD에서 C 코드는 대부분 C 언어로 구현 될 것입니다. C 코드가 중단되는 것을 처리 할 수 ​​있고 다시 시도하면 DBD 내부의 일부 데이터 구조 나 사용되는 라이브러리가 일정하지 않은 상태로 유지 될 수 있습니다.

예제 코드의 오류 가능성은 매우 낮습니다. 문제에 대한 나의 개인적인 일화는 안전 신호가 도입되기 전까지 수년간 전통적인 Perl 신호 처리를 사용했고 오래 전부터 문제가 없었습니다. 신호 처리기에서 내가 한 일에 대해 매우 신중하지 않았습니다. 그런 다음 실제로 100 회 실행 중 약 1 회에 메모리 손상을 유발 한 데이터 세트를 공격했습니다. 예제에서와 비슷한 더 나은 실습을 사용하도록 신호 처리기를 수정하는 것만으로도 문제가 해결되었습니다.

+0

질문이 좋지 않습니다. 이러한 신호 처리 스크립트가 예를 들어 다른 스크립트/프로세스에 영향을 줄 수 있는지 알고 싶습니다. 나는 그것을 믿지 않지만 여전히 보안을 요구합니다. –

1

그게 무슨 뜻입니까? 안전하지 않은 신호를 사용하면 Perl 내부 및 Perl 변수를 손상시킬 수 있습니다. 또한 재진입이 아닌 C 라이브러리 호출이 인터럽트되면 문제가 발생할 수 있습니다.

이렇게하면 SEGFAULT 및 기타 문제가 발생할 수 있으며 시간 제한이 적용되는 블록 밖에서 만 나타날 수 있습니다.

+0

질문은별로 좋지 않습니다. 이러한 신호 처리 스크립트가 예를 들어 다른 스크립트/프로세스에 영향을 줄 수 있는지 알고 싶습니다. 나는 그것을 믿지 않지만 여전히 보안을 요구합니다. –

+1

직접적으로, 아니요. 프로세스의 신호 처리 만 변경합니다. – ikegami

관련 문제