6

며칠 뒤 인터뷰에서 하나 개의 질문이함수 콜백과 프로세스 간 통신이 같습니까?

Are function callback in C and interprocess communication are same? 

로 나에게 물었다 나는 딜레마에 있었던 question.Because에서 비트 중립이었다. IPC에서는 프로세스가 프로세스 일 뿐이라는 사실을 알게되면 프로세스를 끝내기 위해 프로세스간에 통신합니다. 여기에서는 하나의 함수가 다른 함수를 호출합니다. 함수 콜백에서는 function pointer을 다시 사용합니다. 이것은 하나의 함수가 주소가있는 다른 함수를 호출합니다. 그래서 완전히 다르지는 않지만 단지 차이점이 무엇인지 알기를 원합니다.

답변

10

아니요.

함수 콜백은 함수의 주소 (또는 다른 식별자)를 다른 함수에 전달하여 어떤 이유로 든 콜백 할 수 있도록합니다.

전형적인 예는 C 표준 라이브러리 qsort입니다. 비교 함수와 함께 배열 (및 그 크기)에 대한 포인터를 전달합니다. 그런 다음 qsort 함수는 해당 비교 함수 (콜백)를 사용하여 목록의 두 요소 중에서 더 큰 요소를 순서대로 정렬 할 수 있도록 결정합니다.

IPC는 프로세스가 공유 메모리, 파이프, 세마포어 등과 같이 서로 통신하는 수단입니다.

일부 IPC 메커니즘은 콜백을 사용할 수 있지만 반드시 필요한 것은 아닙니다. 예를 들어, 소켓은 콜백을 사용하지 않고 단순히 사용자가 readwrite을 호출 할 수 있도록 허용합니다.

공유 메모리와 마찬가지로 메모리 블록에 연결하고 "일반"메모리와 거의 동일하게 액세스합니다. 메모리에 연결된 모든 프로세스에서 효과가 느껴질뿐입니다.

하나는 입니다. 콜백 종류는 ONC RPC (또는 Sun RPC)입니다. 네트워크를 통해 클라이언트 호출을 기다리고 사전 구성된 클라이언트 기능에 전달하는 서버를 실행합니다. 자세한 내용은 here을 참조하십시오.

하지만 컴파일 타임에 실제로 구성 되었기 때문에 콜백이라고하기는 주저합니다. "적절한"콜백은 런타임에 수행되는 경향이 있습니다.

+1

+1 단순함과 포괄 성으로이 (이 버전의) 대답을 이길 수 없다. –

+0

@paxdiablo : 함수 콜백 : 어떤 이유는 어떤 데이터를 얻는 것을 의미한다. 그래서 우리는 소켓이나 파이프를 사용하여 IPC에서 얻는다. all –

+0

"일부 IPC 메커니즘은 콜백을 사용할 수 있지만 반드시 필요한 것은 아닙니다." - 이것이 정교 할 수 있다면 좋을 것입니다. – Jay

6

함수 콜백은 호출자와 호출 수신자가 같은 스레드에 있음을 의미합니다. IPC는 다른 프로세스에 있습니다. 프로세스는 하나 이상의 스레드로 구성됩니다. 에르고, 콜백은 IPC가 아닙니다.