2011-10-20 2 views
2

안녕하십니까. flockfile 함수에 대한 질문을하고 싶습니다. 설명을 읽고 스레드에서 사용된다는 것을 알게되었습니다. 하지만 나는 다른 프로세스가있을 것입니다 스레드를 내가 다른 프로세스와 flockfile를 사용할 수 있다는 것을 의미합니다 포크를하고있어 어떤 차이가 있습니까?은 flockfile 함수가 프로세스에 사용될 수 있습니다.

감사합니다.

답변

1

이러한 기능은 하나의 프로세스에서만 사용할 수 있습니다. POSIX docs에서

: 요약

, 다른 스레드와 표준 입출력 스트림을 공유하는 스레드가 단일 스레드에 의해 수행 I의 순서를/O의 원인 번들로 유지되어야한다을 flockfile()와 funlockfile()를 사용할 수 있습니다.

나머지 페이지는 스레드 간의 상호 제외에 대해 이야기합니다. 서로 다른 프로세스는 파일 스트림에 대해 서로 다른 입/출력 버퍼를 가지므로이 잠금은 실제로 의미가 없거나 효과적이지는 않습니다.

3

flockfile 함수는 파일을 잠그지 않지만 프로세스가 파일에 액세스하는 데 사용하는 FILE 데이터 구조를 잠급니다. 따라서 이것은 프로세스가 파일에 대해 가지고있는 주소 공간의 표현에 관한 것이지 파일 자체에 관한 것은 아닙니다.

에도 같은 파일에 열려 다른 FILE의이있는 경우 공정에서, 당신은 당신이 flockfile에 의해 FILE의 각을 잠근 경우에도 해당 파일에 동시에 쓸 수 있습니다.

파일 자체를 잠그는 데는 flocklockf이 있지만 동일한 프로세스의 서로 다른 스레드를 통해 액세스 파일에 대한 해당 파일의 규칙이 복잡하다는 점에 유의하십시오.

관련 문제