답변
사용 된 좋은 POSIX 코드 : 어떤 장소에서
#include <signal.h>
void SigPipeHandler(int s);
void SigPipeHandler(int s)
{
// do your handling
}
초기화 (main.m?)
signal(SIGPIPE, SigPipeHandler);
와 여기에 설명 된대로 SO_NOSIGPIPE을 설정하십시오 : How to prevent SIGPIPEs (or handle them properly)
첫 번째 대답은 작동하지 않습니다. 또한 나는 두 번째 이후의 참조에 설명 된 솔루션을 사용하려고 해요 :
int main(int argc, char *argv[ ]) {
struct sigaction mySigAction;
mySigAction.sa_handler = SIG_IGN;
sigemptyset(&mySigAction.sa_mask);
sigaction(SIGPIPE, &mySigAction, NULL);
...
}
을하지만,이 코드도 작동하지 않습니다. 이 문제의 해결책을 아는 사람이 있습니까?
첫 번째 대답은 정상적으로 작동합니다. 하지만 모든 것을 main.mm
파일에 넣어야합니다.
그리고 static class(Singleton)
에서도 작동합니다. SigPipeHandler을 테스트
#import <UIKit/UIKit.h>
#import <sys/signal.h>
#if TARGET_IPHONE_SIMULATOR
#endif
void SigPipeHandler(int s)
{
NSLog(@"We Got a Pipe Single :%d____________",s);
}
int main(int argc, char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
signal(SIGPIPE, SigPipeHandler);
int retVal = UIApplicationMain(argc, argv, nil, @"FullAppDelegate");
[pool release];
return retVal;
}
한 가지 중요한 사실 : 디버거가 atached 때
나를 위해 작동하지 않았다. 따라서 Xcode에서 직접 응용 프로그램을 실행할 때 Handler가 호출되지 않습니다. 한편 디버거가 연결되지 않은 장치에서는 처리기가 예상대로 작동합니다.
이 답변을 게시 해 주셔서 감사합니다. 디버깅 할 때 제대로 처리되지 않는 신호와 동일한 동작을 관찰했지만 디버깅하지 않을 때는 잘 처리됩니다 ... 이상! 어쨌든, 이것은 궁극적으로 내 애플 리케이션이 사실 SIGPIPE를 처리하고 있다는 것을 깨닫는 데 도움이되었지만 실제로 문제는 처리 된 후에 예외가 발생했지만'@ try''@ catch '를 사용하는 목적 코드에서 잡히지 않았습니다. C 'try'catch 블록이 아닙니다. – Sam
내 sigpipe 처리기가 iOS 시뮬레이터에서 호출되지 않은 것 같습니다. 어쩌면 그것은 내가 xCode에 연결되어 디버깅되었지만 시뮬레이터일지도 모른다고 생각했습니다. –
- 1. 잡는 GPS 위치 아이폰 SDK
- 2. YAJL 내 아이폰 앱에서 아이폰 OS/아이폰
- 3. gsoap에서 예외를 잡는 방법?
- 4. 아이폰 앱에서 맵킷 사용
- 5. 아이폰 앱에서 Tabbaritem 이미지를 동적으로 변경하는 방법
- 6. 아이폰 앱에서 아랍어로 텍스트를 사용하는 방법
- 7. 기본 아이폰 앱에서 원격 데이터베이스에 연결하는 방법
- 8. 멀티 뷰 아이폰 앱에서 배열을 재설정하는 방법
- 9. 아이폰 앱에서 UITableViewController에 대한 데이터를 얻는 방법
- 10. 아이폰 웹 앱에서 숫자판을 묻는 방법?
- 11. 아이폰 앱에서 WebView 콘텐츠 축소하기
- 12. 다른 아이폰 앱에서 아이폰 앱을 시작 하시겠습니까?
- 13. 아이폰 앱에서 UIImage를 삼각형으로 자른다
- 14. 내 아이폰 앱에서 이메일 설정
- 15. 아이폰 앱에서 좋은 경고 발생
- 16. 아이폰 앱에서 윈도우 라이브 인증
- 17. exit (0) 사용; 아이폰 앱에서
- 18. 아이폰 앱에서 NSDictionary 배열 정렬
- 19. 아이폰 앱에서 HTML 링크를 따라
- 20. Gtk.TreeView에서 클릭을 잡는 방법?
- 21. ThreadAbort를 잡는 방법?
- 22. int를 잡는 방법
- 23. 스레드에서 예외를 잡는 방법?
- 24. PHP : 요일을 잡는 방법?
- 25. 오류 잡는 방법
- 26. DLL에 오류를 잡는 방법
- 27. 아이폰에서 방향을 잡는 방법?
- 28. TypeInitializationException을 잡는 방법?
- 29. Htc Hero Dialer에서 호출 의도를 잡는 방법
- 30. bash 스크립트에서 SIGPIPE를 트랩하는 것이 좋습니까?
작동하지 않거나 올바르게 사용하지 않습니다. 두 번째 스레드에서이 오류가 발생했습니다. – Shay
핸들러를 일찍 설치할 수 있습니까? – Farcaller