# tree-kill

## Tree Kill

Kill all processes in the process tree, including the root process.

## Examples

Kill all the descendent processes of the process with pid `1`, including the process with pid `1` itself:

```js
var kill = require('tree-kill');
kill(1);
```

Send a signal other than SIGTERM.:

```js
var kill = require('tree-kill');
kill(1, 'SIGKILL');
```

Run a callback when done killing the processes. Passes an error argument if there was an error.

```js
var kill = require('tree-kill');
kill(1, 'SIGKILL', function(err) {
    // Do things
});
```

You can also install tree-kill globally and use it as a command:

```sh
tree-kill 1          # sends SIGTERM to process 1 and its descendents
tree-kill 1 SIGTERM  # same
tree-kill 1 SIGKILL  # sends KILL instead of TERMINATE
```

## Methods

### require('tree-kill')(pid, \[signal], \[callback]);

Sends signal `signal` to all children processes of the process with pid `pid`, including `pid`. Signal defaults to `SIGTERM`.

For Linux, this uses `ps -o pid --no-headers --ppid PID` to find the parent pids of `PID`.

For Darwin/OSX, this uses `pgrep -P PID` to find the parent pids of `PID`.

For Windows, this uses `'taskkill /pid PID /T /F'` to kill the process tree. Note that on Windows, sending the different kinds of POSIX signals is not possible.

## Install

With [npm](https://npmjs.org) do:

```
npm install tree-kill
```

## License

MIT

## Changelog

### \[1.2.2] - 2019-12-11

#### Changed

* security fix: sanitize `pid` parameter to fix arbitrary code execution vulnerability

### \[1.2.1] - 2018-11-05

#### Changed

* added missing LICENSE file
* updated TypeScript definitions

### \[1.2.0] - 2017-09-19

#### Added

* TypeScript definitions

#### Changed

* `kill(pid, callback)` works. Before you had to use `kill(pid, signal, callback)`

### \[1.1.0] - 2016-05-13

#### Added

* A `tree-kill` CLI

### \[1.0.0] - 2015-09-17

#### Added

* optional callback
* Darwin support


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mediamagic.dev/product-docs/services/graphql-gateway/node_modules/tree-kill.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
