프로세스에 스레드가 여러 개있는 경우 fork()의 동작은 정의되지 않습니다. 어떻게하면 하나의 스레드 (리눅스에서는 주로, 윈도우즈, 다윈 (darwin)도 관심 대상 임) 만 있는지 확인할 수 있습니까?fork()가 안전한지 확인
3
A
답변
2
Linux에서 fork()의 동작은 멀티 스레드 프로세스에서는 정의되지 않지만 일반적으로 도움이되지 않는 작업을 수행합니다.
또는 fork()를 호출하고 즉시 exec()를 호출하지 않으면 교착 상태를 유발할 수있는 잠금을 포함하여 지정되지 않은 리소스가 누출 될 위험이 있습니다.
Linux (procfs를 통해)에게 현재 스레드 그룹에있는 스레드 수를 물어볼 수 있습니다. 대답이 하나라면 프로세스가 단일 스레드임을 의미합니다.
2
이 작업을 수행 할 수 없습니다. pthreads를 사용하면 pthread_is_multithreaded_np()
함수를 사용할 수 있지만 fork()
코드는 pthreads에 종속적 일 수 있으며 모든 플랫폼에서 작동하지는 않습니다. 그리고 스레딩 라이브러리에 관계없이 검사를 수행 할 방법이 없습니다.
응용 프로그램 인 경우 스레드와 포크를 동시에 사용하지 마십시오. 스레드 된 프로그램을 작성하는 경우 fork()
을 호출하지 마십시오 (fork/execv 콤보 제외).
라이브러리 인 경우 fork()
을 사용하지 않거나 라이브러리가 스레드 된 응용 프로그램과 함께 사용되지 않도록해야합니다.
응용 프로그램의 경우 pthread_atfork(...)
을 사용하여 fork()
에 안전하게 전화를 걸 수 있습니다.
관련 문제
- 1. JDO에서의이 트랜잭션이 안전한지 이해하기
- 2. 행을 삭제해도 안전한지 확인하십시오.
- 3. 업로드 된 파일이 안전한지 확인하십시오.
- 4. (ssh를 통해) 원격으로 실행할 때 perl fork가 제대로 작동하지 않습니다.
- 5. 파이썬 모듈을 평가하는 방법은 스레드로부터 안전한지 여부입니다.
- 6. PHP 스크립트가 안전한지 확인하는 시스템이 있습니까?
- 7. 라이브러리/암호가 얼마나 안전한지 사용자에게 알려주는 기능?
- 8. 내 방법이 스레드로부터 안전한지 여부는 언제 물어야합니까?
- 9. PHP에서 사용자 정의 경로가 안전한지 확인하십시오.
- 10. TCP 연결에서 SSL을 사용하는지 확인
- 11. Windows에서 WiFi (예 : WPA2/WEP)가 안전한지 확인하는 프로그램 C++
- 12. Java에서 웹 응용 프로그램이 스레드로부터 안전한지 어떻게 확인합니까?
- 13. 클래스가 스레드로부터 안전한지 여부를 태그하는 방법은 무엇입니까? MSDN 문서에서
- 14. 정확한 타입 캐스팅 확인
- 15. Dialog.action_area에서 확인 버튼 확인
- 16. 확인
- 17. 확인
- 18. 확인
- 19. 확인
- 20. 확인
- 21. 확인
- 22. 확인
- 23. 생년월일 확인 및 나이 확인
- 24. 스크롤 막대 확인 여부 확인
- 25. jQuery 라디오 버튼 확인 확인
- 26. Internet Explorer의 "항상 새 페이지 확인"확인
- 27. C#에서 실행중인 설치 확인 확인
- 28. 신용 카드 결제 확인 - $ _SERVER [ 'HTTP_REFERER'] 확인
- 29. PHP 문의 문의 양식 확인 스크립트 확인?
- 30. 사용자 제공 CSS가 악의적이지 않은지 확인/확인
'여기에 의견 입력' –
대기. 왜 이것이 진짜 질문이 아닌가? 제가 놓친 편집이 있었습니까? (편집 역사는 보이지 않습니까?) –
@Matti Virkkunen : 원래 게시 된 질문에는 본문이 없습니다 (단지 여기에 코드 입력) 및 완전히 다른 제목이 있습니다. – eldarerathis