C 分段故障-32/64位问题?

C 分段故障-32/64位问题?,c,triggers,capture,C,Triggers,Capture,我目前正在从事一个小项目,该项目捕获数据包,并在特定限制超过时触发外部应用程序或脚本,以处理以下步骤(例如警报、空路由等) 我试图用这段代码创建一个非常简单的触发器(“触发器”包含二进制或脚本的路径): 在我的Ubuntu12.04.1 LTS上,它似乎可以正常工作,我用“echo”应用程序进行了测试 linux-gate.so.1 => (0xb779f000) libpcap.so.0.8 => /usr/lib/i386-linux-gnu/libpcap.so.0.8 (0

我目前正在从事一个小项目,该项目捕获数据包,并在特定限制超过时触发外部应用程序或脚本,以处理以下步骤(例如警报、空路由等)

我试图用这段代码创建一个非常简单的触发器(“触发器”包含二进制或脚本的路径):

在我的Ubuntu12.04.1 LTS上,它似乎可以正常工作,我用“echo”应用程序进行了测试

linux-gate.so.1 =>  (0xb779f000)
libpcap.so.0.8 => /usr/lib/i386-linux-gnu/libpcap.so.0.8 (0xb7752000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb75a8000)
/lib/ld-linux.so.2 (0xb77a0000)
在Debian喘息和“grml”实例中,我在执行二进制文件时收到分段错误。(我通过注释并重试,验证了此问题是由上述代码引起的。)

我看到的唯一区别是架构,Ubuntu系统是32位操作系统,而Debian是64位操作系统

我不确定这是否是问题所在,但似乎是

有人能帮我解决这个问题吗

提前谢谢你

由于功能请求仍然被拒绝,我在这里复制上述解决方案


。。。可能需要为触发器分配一些内存。\u complete!–托马斯

。。。可能需要为
触发器\u complete
分配一些内存!顺便说一句:inet_ntoa()返回指向静态分配的缓冲区的指针。在printf()的参数中调用两次可能会导致结果看起来相等,因为第二次调用会覆盖第一次调用的结果。顺便说一句:真正的错误可能在您没有显示的行中。似乎使用malloc()对我有效。我得进一步检查一下。到目前为止非常感谢。您关于inet_ntoa()的提示是正确的,我将不得不修复此问题,但这是另一章;)非常感谢。是的,那就够了。顺便说一句,检查SEGFULTS的一个好工具是“valgrind”。
linux-gate.so.1 =>  (0xb779f000)
libpcap.so.0.8 => /usr/lib/i386-linux-gnu/libpcap.so.0.8 (0xb7752000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb75a8000)
/lib/ld-linux.so.2 (0xb77a0000)
linux-vdso.so.1 =>  (0x00007fff875ff000)
libpcap.so.0.8 => /usr/lib/x86_64-linux-gnu/libpcap.so.0.8 (0x00007fa9c6048000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa9c5cbe000)
/lib64/ld-linux-x86-64.so.2 (0x00007fa9c608d000)