0

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

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

char * trigger_complete;
sprintf(trigger_complete, "%s %u %u %s %s %Lf", trigger, data[II].count, data[II].proto, inet_ntoa(data[II].src_ip), inet_ntoa(data[II].dst_ip), rate);
system (trigger_complete);

在我的 Ubuntu 12.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 Wheezy 和“grml”实例上,我在执行二进制文件时收到分段错误。(我通过注释掉并重试验证了这个问题是由上面的代码段引起的。)

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)

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

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

谁能帮我解决这个问题?

先感谢您!

4

1 回答 1

0

由于将评论标记为答案的功能请求仍然被拒绝,因此我在此处复制上述解决方案。

...可能想为 trigger_complete 分配一些内存!– 托马斯

于 2014-06-05T11:54:05.993 回答