這裏想從文件enter_data中複製數據並將其傳遞給函數insert(key,keys),但是我得到了一個分段錯誤,我無法從文件使用fread時分段錯誤,並且無法讀取文件中的數據
這裏的分類是一個結構,packet_filter具有IP和UDP的結構,我想進入src和目標IP地址經過和src和目標端口號
struct classifier
{
int key_node;
struct packet_filter pktFltr;
struct classifier *next;
}__attribute__((packed));
void addrule(struct classifier keys)
{
int key;
FILE *fp;
fp = fopen("enter_data","r");
fread(&keys, sizeof (struct classifier), 3, fp);
insert(key,keys);
fclose(fp);
}
讀取數據
file: enter_data
key = 822;
keys.key_node = 822;
inet_aton("172.28.6.137", &(keys.pktFltr.ip.ip_src));
inet_aton("172.28.6.10",&(keys.pktFltr.ip.ip_dst));
keys.pktFltr.protocol.proto.uh_sport = ntohs(1032);
keys.pktFltr.protocol.proto.uh_dport = ntohs(5000);
keys.next = NULL;
key = 522 ;
keys.key_node = 522;
inet_aton("172.28.6.87", &(keys.pktFltr.ip.ip_src));
inet_aton("172.28.6.110",&(keys.pktFltr.ip.ip_dst));
keys.pktFltr.protocol.proto.uh_sport = ntohs(1032);
keys.pktFltr.protocol.proto.uh_dport = ntohs(5010);
keys.next = NULL;
key = 522 ;
keys.key_node = 522;
inet_aton("172.28.6.87", &(keys.pktFltr.ip.ip_src));
inet_aton("172.28.6.110",&(keys.pktFltr.ip.ip_dst));
keys.pktFltr.protocol.proto.uh_sport = ntohs(1032);
keys.pktFltr.protocol.proto.uh_dport = ntohs(5011);
keys.next = NULL;
您是否嘗試過該代碼運行調試,以確定究竟是段錯誤? – 2011-05-11 13:19:22
如果第二篇文章是你的文件,那麼這段代碼將不起作用。您正在嘗試使用二進制序列化進行讀取,但您的文件是一個文本文件。 – Chad 2011-05-11 13:19:35