---
name: "__pmConnectLogger"
section: "3"
platform: "linux"
package: "pcp"
version: "7.2.2-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/__pmConnectLogger"
---

# \_\_pmConnectLogger(3)

connect to a performance metrics logger control port

## NAME

**\_\_pmConnectLogger** - connect to a performance metrics logger control port

## C SYNOPSIS

**#include "pmapi.h"**\
 **#include "libpcp.h"**

**int \_\_pmConnectLogger(const char \****hostname***, int** *pid***);**

**cc ... -lpcp**

## CAVEAT

This documentation is intended for internal Performance Co-Pilot (PCP) developer use.

These interfaces are not part of the PCP APIs that are guaranteed to remain fixed across releases, and they may not work, or may provide different semantics at some point in the future.

## DESCRIPTION

Each instance of the Performance Co-Pilot (PCP) archive creation program [**pmlogger**(1)](/pmlogger/1.md) supports a control port on which [**\_\_pmControlLog**(3)](/__pmControlLog/3.md) requests are received, and responses sent. Optionally, the [**pmlogger**(1)](/pmlogger/1.md) instance may be designated the \`\`primary'' logger.

**\_\_pmConnectLogger** may be used to establish a control port connection to the [**pmlogger**(1)](/pmlogger/1.md) instance identified by process id *pid* on the host *hostname*.

One special case is supported; for the reserved *pid* value of **PM\_LOG\_PRIMARY\_PORT** the requested connection is to the control port for the \`\`primary'' logger, whatever its process id might be.

On success, **\_\_pmConnectLogger** returns a non-negative integer, that is a file descriptor that may be used in subsequent communication with the [**pmlogger**(1)](/pmlogger/1.md) instance, e.g. for [**\_\_pmControlLog**(3)](/__pmControlLog/3.md).

As the control port to [**pmlogger**(1)](/pmlogger/1.md) is not multiplexed, applications using **\_\_pmConnectLogger** should use [**close**(2)](/close/2.md) to terminate the connection to [**pmlogger**(1)](/pmlogger/1.md) as soon as they have finished communicating.

If the application connects, and the [**pmlogger**(1)](/pmlogger/1.md) instance subsequently terminates, e.g. because the associated [**pmcd**(1)](/pmcd/1.md) instance is terminated, the application will have to explicitly re-establish connection to a re-started [**pmlogger**(1)](/pmlogger/1.md) instance by calling **\_\_pmConnectLogger** again.

## DIAGNOSTICS

- **PM\_ERR\_PERMISSION**

  no permission to connect to the specified [**pmlogger**(1)](/pmlogger/1.md) instance

- **-ECONNREFUSED**

  the designated [**pmlogger**(1)](/pmlogger/1.md) instance does not exist

- **-EADDRINUSE**

  the requested control port is already in use

## SEE ALSO

[**pmcd**(1)](/pmcd/1.md), [**pmlc**(1)](/pmlc/1.md), [**pmlogger**(1)](/pmlogger/1.md), [**PMAPI**(3)](/PMAPI/3.md) and [**\_\_pmControlLog**(3)](/__pmControlLog/3.md).
