我是初学者,我想了解一些用C语言编写的客户端 - 服务器应用程序的基础知识(我理解用Java,PHP等编写的基于Web的服务器 - 客户端应用程序)。
更具体地说,我说的是ZABBIX,它是一个客户端 - 服务器工具(Zabbix_server是一个服务器,zabbix_agentd是一个客户端,都用C语言编写)。
Zabbix_server要求zabbix_agentd提供数据,zabbix_agents会相应地做出响应。
我在Eclipse上导入了zabbix代码,并尝试调试以理解代码。在Eclipse上完整执行zabbix_agentd只是成功启动了守护进程并创建了一个子进程。但是当我检查日志时,我发现正在调用不同的函数,这些函数在调试时没有妨碍。这意味着,这些函数被某些进程调用,可能是inetd等等。(如果我错了,请纠正我)。我试图在RHEL 6.4 OS上找到inetd,但是找不到它(使用“service inetd status”,“find”)。
那么,这些函数是如何被调用的?有人可以给我一些想法吗? 请建议我如何使用这些调用请求来进一步调试我的客户端应用程序。
在调试Eclipse时我注意到的一件事是,在调用fork()之后我得到了以下错误:
No source available for "fork() at 0x36ca0acbc0"
我无法理解上述错误的影响,因为守护进程在此错误之后仍然继续工作。 我浏览了不同的人得到的类似错误,发现他们的二进制文件没有链接到源。但是,我的二进制文件也与源相关联。我的意思是,扩展zabbix_agentd的二进制文件会显示几个* .h和* .c文件。
由于此错误会立即终止调试器,但此时发生的代码行也是源文件的最后一行。所以,我不能说我是否需要注意这个错误。
这个错误是我无法查看被调用的其他函数的原因吗?
如果需要更多信息,请与我们联系。
提前致谢。
此致 罗希特夏尔