---
name: "pmconnectlogger"
section: "3"
platform: "linux"
package: "libpcp3-dev"
version: "3.9.10"
release: "Debian 8 (Jessie)"
platforms: ["linux"]
url: "https://new.carta.tech/__pmConnectLogger"
---

# pmconnectlogger(3)

connect to a performance metrics logger control port

Part of [\_\_pmConnectLogger(3)](/__pmConnectLogger/3.md).

## NAME

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

## C SYNOPSIS

**#include \<pcp/pmapi.h\>**\
 **#include \<pcp/impl.h\>**\

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

**cc ... -lpcp**

## DESCRIPTION

Each instance of the Performance Co-Pilot (PCP) archive logger 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\_CONTROL\_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 mulitplexed, 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.

## 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).

## 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

- **-EEADDRINUSE**

  the requested control port is already in use
