如何在c语言中同时读写pcap文件

如何在c语言中同时读写pcap文件,c,pcap,libpcap,C,Pcap,Libpcap,我有两个用C编写的程序,一个程序写入pcap文件,第二个程序同时从中读取 while(j < 100000) { pcount = pcap_dispatch(p,2000,&pcap_dump,(u_char *)pd); j = j+pcount; printf("Got %d packets , total packets %d\n",pcount,j); } while

我有两个用C编写的程序,一个程序写入pcap文件,第二个程序同时从中读取

while(j < 100000)
        {
            pcount = pcap_dispatch(p,2000,&pcap_dump,(u_char *)pd);
            j = j+pcount;
            printf("Got %d packets , total packets %d\n",pcount,j);
        }
while( (returnValue=pcap_next_ex(pcap,&header,&data)) >= 0)
        {
            printf("Packet # %d ",++packetCount);
            printf("return value %d\n",returnValue);
        }
当我单独运行程序时,即当我停止写入pcap文件时,它会完美地解码数据包。但是,当我同时运行这两个程序时,解码器不会对所有数据包进行解码。如果我得到100个数据包,解码器将只显示50-60个解码数据包


任何帮助都将不胜感激。

在我看来,读者的文件不会在作者写入pcap文件后立即更新。这可能是由于读卡器的文件指针未刷新,即读卡器读取的是未更新版本的文件。
希望它能帮助你

在我看来,读卡器文件不会在编写器写入pcap文件后立即更新。这可能是由于读卡器的文件指针未刷新,即读卡器读取的是未更新版本的文件。
希望它能帮助你

这就是管道的用途。我建议像

pcap_writer -w - | tee permanent-file.pcap | pcap_reader -r -

其中
pcap\u writer
pcap\u reader
是您的程序。这样,如果需要,您可以创建可以以不同方式组合的内容。

这就是管道的用途。我建议像

pcap_writer -w - | tee permanent-file.pcap | pcap_reader -r -

其中
pcap\u writer
pcap\u reader
是您的程序。这样你就可以创造出一些可以以不同方式组合的东西,如果需要。

你是对的,但是我如何更新读卡器的文件指针以匹配写入程序的文件指针?你是对的,但是我如何更新读卡器的文件指针以匹配写入程序的文件指针?基本上我已经在写入程序中创建了pcap文件,因此,我无法理解如何通过管道传输另一个pcap文件,因为我在自己的pcap文件(使用自己的嗅探器)中写入,而该文件正在不断更新写入stdout而不是文件。然后,您可以使用tee将输出传输到一个文件,并将其发送到您的读取程序。基本上,我已经在writer程序中创建了pcap文件,因此我无法理解如何传输另一个pcap文件,因为我正在使用自己的pcap文件(使用自己的嗅探器)进行写入,该文件正在不断更新写入stdout而不是文件。然后,您可以使用tee将输出通过管道传输到一个文件,并将其发送到您的读取程序。