# ProcessSignalBinding

`import { ProcessSignalBinding } from "destack:process/binding";`

Signal binding family.

```ds title="ProcessSignalBinding"
export interface ProcessSignalBinding {
    sendSignal(pid: ProcessId, signal: Signal): Result<void, HostError>;
    signalProcess(process: ProcessHandle, signal: Signal): Result<void, HostError>;
    subscribeSignal(signal: Signal): Result<SignalHandle, HostError>;
    unsubscribeSignal(handle: SignalHandle): Result<void, HostError>;
    receiveSignal(handle: SignalHandle): Result<SignalEvent, HostError>;
    tryReceiveSignal(handle: SignalHandle): Result<SignalEvent, HostError>;
    waitSignal(signals: &'a readonly [Signal]): Result<SignalEvent, HostError>;
    tryWaitSignal(signals: &'a readonly [Signal]): Result<SignalEvent, HostError>;
}
```

[language/library/src/process/binding/signal.ds:22:94](https://github.com/destack-sh/destack/blob/main/language/library/src/process/binding/signal.ds#L22-L94)

## Members

### `sendSignal(pid: ProcessId, signal: Signal): Result<void, HostError>`

Send a signal to a target process.

### `signalProcess(process: ProcessHandle, signal: Signal): Result<void, HostError>`

Send a signal to a target process handle.

### `subscribeSignal(signal: Signal): Result<SignalHandle, HostError>`

Subscribe to one signal value.

### `unsubscribeSignal(handle: SignalHandle): Result<void, HostError>`

Remove a signal subscription handle.

### `receiveSignal(handle: SignalHandle): Result<SignalEvent, HostError>`

Receive the next signal event from a subscription.

### `tryReceiveSignal(handle: SignalHandle): Result<SignalEvent, HostError>`

Poll one signal event without blocking.

### `waitSignal(signals: &'a readonly [Signal]): Result<SignalEvent, HostError>`

Wait for one signal from a requested set.

### `tryWaitSignal(signals: &'a readonly [Signal]): Result<SignalEvent, HostError>`

Poll one signal from a requested set without blocking.
