Ras*_*yak 6 c operating-system function-pointers inter-process-communicat
几天前,在一次采访中,一个问题被问到我,
Are function callback in C and interprocess communication are same?
Run Code Online (Sandbox Code Playgroud)
我在这个问题上有点中立.因为我处于两难境地.在IPC中,如果我们看到流程只是一个功能,我们会在流程与流程之间进行通信.这里有一个函数调用其他函数.在函数回调中我们function pointer
再次使用,即一个函数调用带地址的其他函数.所以只是想知道虽然它们并不完全相同,那么有什么区别?
pax*_*blo 10
不,不是真的.
函数回调是将函数的地址(或其他标识符)传递给另一个函数,以便它可以出于某种原因回调.
典型的例子是C标准库qsort
函数.传入指向数组的指针(及其大小)以及比较函数.qsort
然后,该函数使用该比较函数(回调)来确定列表中任何两个元素中的哪一个更大,以便它可以按顺序排列它们.
另一方面,IPC是进程相互通信的手段,例如共享内存,管道,信号量等.
一些IPC机制可能会使用回调,但这绝不是必要的.例如,套接字不使用回调,它们只允许用户调用read
和write
.
与共享内存类似,您可以附加到内存块并简单地访问它们与"常规"内存非常相似,只是在连接到该内存的所有进程中感受到效果.
一说确实有点使用回调是ONC RPC(或Sun RPC).它运行一个服务器,通过网络等待客户端调用,并将它们传递给预先配置的客户端功能.更多细节可以在这里找到.
但是,即便如此,我还是会犹豫是否将它称为回调,因为它确实是在编译时配置的."适当的"回调往往是在运行时完成的.