使用libpcap写抓包程序运行出现段错误,求解答。

cs小亮 2013-04-23 11:47:10
#include <stdio.h>
#include <stdlib.h>
#include <pcap.h>
void main()
{
char error_content[PCAP_ERRBUF_SIZE];
struct pcap_pkthdr protocol_header;
pcap_t *pcap_handle;
struct bpf_program bpf_filter;
char bpf_filter_string[]="";
const u_char *packet_content;
bpf_u_int32 net_mask;
bpf_u_int32 net_ip;
char *net_interface;
net_interface=pcap_lookupdev(error_content);
pcap_lookupnet(net_interface,&net_ip,&net_mask,error_content);
pcap_handle=pcap_open_live(net_interface,BUFSIZ,1,0,error_content);
pcap_compile(pcap_handle,&bpf_filter,bpf_filter_string,0,net_ip);
pcap_setfilter(pcap_handle,&bpf_filter);
packet_content=pcap_next(pcap_handle,&protocol_header);
printf("capture a packet from:%s\n",net_interface);
printf("the packet length is:%d\n",protocol_header.len);
pcap_close(pcap_handle);

}
很简单的一段程序,到底哪里有问题?
运行时提示:段错误 (核心已转储)
...全文
576 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
prohibit 2013-04-23
  • 打赏
  • 举报
回复
引用 2 楼 u010418986 的回复:
谢谢,vi下编译运行可以了,但是在codeblocks下还是段错误,是权限不够吗?
是的,程序监听的是网卡eth0,普通用户没权限,所以函数pcap_lookupdev返回NULL,在接着的函数pcap_lookupnet中使用NULL值时就会出段错误;
codeblocks应该可以从命令行启动,以root权限启动codeblocks,再编译运行,就OK了;
cs小亮 2013-04-23
  • 打赏
  • 举报
回复
谢谢,vi下编译运行可以了,但是在codeblocks下还是段错误,是权限不够吗?
prohibit 2013-04-23
  • 打赏
  • 举报
回复
用root权限运行编译后的可执行文件
cs小亮 2013-04-23
  • 打赏
  • 举报
回复
引用 3 楼 prohibit 的回复:
引用 2 楼 u010418986 的回复:谢谢,vi下编译运行可以了,但是在codeblocks下还是段错误,是权限不够吗?是的,程序监听的是网卡eth0,普通用户没权限,所以函数pcap_lookupdev返回NULL,在接着的函数pcap_lookupnet中使用NULL值时就会出段错误; codeblocks应该可以从命令行启动,以root权限启动codeblo……
谢谢

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧