안녕하십니까. flockfile 함수에 대한 질문을하고 싶습니다. 설명을 읽고 스레드에서 사용된다는 것을 알게되었습니다. 하지만 나는 다른 프로세스가있을 것입니다 스레드를 내가 다른 프로세스와 flockfile를 사용할 수 있다는 것을 의미합니다 포크를하고있어 어떤 차이가 있습니까?은 flockfile 함수가 프로세스에 사용될 수 있습니다.
감사합니다.
안녕하십니까. flockfile 함수에 대한 질문을하고 싶습니다. 설명을 읽고 스레드에서 사용된다는 것을 알게되었습니다. 하지만 나는 다른 프로세스가있을 것입니다 스레드를 내가 다른 프로세스와 flockfile를 사용할 수 있다는 것을 의미합니다 포크를하고있어 어떤 차이가 있습니까?은 flockfile 함수가 프로세스에 사용될 수 있습니다.
감사합니다.
이러한 기능은 하나의 프로세스에서만 사용할 수 있습니다. POSIX docs에서
: 요약
, 다른 스레드와 표준 입출력 스트림을 공유하는 스레드가 단일 스레드에 의해 수행 I의 순서를/O의 원인 번들로 유지되어야한다을 flockfile()와 funlockfile()를 사용할 수 있습니다.
나머지 페이지는 스레드 간의 상호 제외에 대해 이야기합니다. 서로 다른 프로세스는 파일 스트림에 대해 서로 다른 입/출력 버퍼를 가지므로이 잠금은 실제로 의미가 없거나 효과적이지는 않습니다.
flockfile
함수는 파일을 잠그지 않지만 프로세스가 파일에 액세스하는 데 사용하는 FILE
데이터 구조를 잠급니다. 따라서 이것은 프로세스가 파일에 대해 가지고있는 주소 공간의 표현에 관한 것이지 파일 자체에 관한 것은 아닙니다.
에도 같은 파일에 열려 다른 FILE
의이있는 경우 공정에서, 당신은 당신이 flockfile
에 의해 FILE
의 각을 잠근 경우에도 해당 파일에 동시에 쓸 수 있습니다.
파일 자체를 잠그는 데는 flock
과 lockf
이 있지만 동일한 프로세스의 서로 다른 스레드를 통해 액세스 파일에 대한 해당 파일의 규칙이 복잡하다는 점에 유의하십시오.