48 lines
1.6 KiB
Text
48 lines
1.6 KiB
Text
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#include "nsISupports.idl"
|
|
|
|
[scriptable, uuid(1341f571-ebed-4305-b264-4d8fc3b6b11c)]
|
|
interface nsIProcessToolsService: nsISupports {
|
|
/**
|
|
* Kill a process running on this system.
|
|
*
|
|
* Does not cause a crash report to be generated and sent.
|
|
*
|
|
* # Note
|
|
*
|
|
* `pid` is the unique-to-the-system process identifier, as
|
|
* obtained with attribute `pid` of this service.
|
|
*
|
|
* Under Un*ix, that's what you obtain with `getpid()`, etc.
|
|
* Under Windows, that's what you obtain with `GetCurrentProcessId()`,
|
|
* NOT the same thing as the process `HANDLE`.
|
|
*
|
|
* # Failure
|
|
*
|
|
* Under Windows, if two processes race to `kill()` a third process,
|
|
* or two threads race to `kill()` a process there is a (small) window
|
|
* during which this can cause a crash in the losing process.
|
|
*
|
|
* # Caveats
|
|
*
|
|
* Under Windows, process killing is asynchronous. Therefore, this
|
|
* function can return before process `pid` is actually dead.
|
|
*/
|
|
void kill(in unsigned long long pid);
|
|
|
|
/**
|
|
* Crash a process running on this system. Generates a SIGABRT on Linux and
|
|
* macOS, and a STATUS_ILLEGAL_INSTRUCTION on Windows.
|
|
*
|
|
* Does cause a crash report to be generated.
|
|
*/
|
|
void crash(in unsigned long long pid);
|
|
|
|
/**
|
|
* The pid for the current process.
|
|
*/
|
|
readonly attribute unsigned long long pid;
|
|
};
|