---
name: "pcap_dump_open"
section: "3pcap"
platform: "linux"
package: "libpcap"
version: "1.11.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "macos"]
url: "https://new.carta.tech/pcap_dump_open/3pcap"
---

# pcap\_dump\_open(3pcap)

open a file to which to write packets

## NAME

pcap\_dump\_open, pcap\_dump\_open\_append, pcap\_dump\_fopen - open a file to which to write packets

## SYNOPSIS

```
#include <pcap/pcap.h>
```

**pcap\_dumper\_t \*pcap\_dump\_open(pcap\_t \*p, const char \*fname);** **pcap\_dumper\_t \*pcap\_dump\_open\_append(pcap\_t \*p, const char \*fname);** **pcap\_dumper\_t \*pcap\_dump\_fopen(pcap\_t \*p, FILE \*fp);**

## DESCRIPTION

**pcap\_dump\_open**() is called to open a \`\`savefile'' for writing. *fname* specifies the name of the file to open.  The file will have the same format as those used by [**tcpdump**(1)](/tcpdump/1.md) and [**tcpslice**(1)](/tcpslice/1.md). If the file does not exist, it will be created; if the file exists, it will be truncated and overwritten. The name "-" is a synonym for **stdout**.

**pcap\_dump\_fopen**() is called to write data to an existing open stream *fp*; this stream will be closed by a subsequent call to **pcap\_dump\_close**(3PCAP). The stream is assumed to be at the beginning of a file that has been newly created or truncated, so that writes will start at the beginning of the file. Note that on Windows, that stream should be opened in binary mode.

*p* is a capture or \`\`savefile'' handle returned by an earlier call to **pcap\_create**(3PCAP) and activated by an earlier call to **pcap\_activate**(3PCAP), or returned by an earlier call to **pcap\_open\_offline**(3PCAP), **pcap\_open\_live**(3PCAP), or **pcap\_open\_dead**(3PCAP). The time stamp precision, link-layer type, and snapshot length from *p* are used as the link-layer type and snapshot length of the output file.

**pcap\_dump\_open\_append**() is like **pcap\_dump\_open**() but, if the file already exists, and is a pcap file with the same byte order as the host opening the file, and has the same time stamp precision, link-layer header type, and snapshot length as *p*, it will write new packets at the end of the file.

## RETURN VALUE

A pointer to a **pcap\_dumper\_t** structure to use in subsequent **pcap\_dump**(3PCAP) and **pcap\_dump\_close**(3PCAP) calls is returned on success. A null pointer is returned on failure. If a null pointer is returned, **pcap\_geterr**(3PCAP) can be used to get the error text.

## BACKWARD COMPATIBILITY

The **pcap\_dump\_open\_append**() function became available in libpcap release 1.7.2.  In previous releases, there is no support for appending packets to an existing savefile.

## SEE ALSO

**pcap**(3PCAP), [**pcap-savefile**(5)](/pcap-savefile/5.md)
