зеркало из https://github.com/electron/electron.git
fix: `utilityProcess` pid should be `undefined` after exit (#44677)
fix: utilityProcess pid should be undefined after exit
This commit is contained in:
Родитель
15ff999bdc
Коммит
dd50afa8c2
|
@ -92,6 +92,8 @@ the child process exits, then the value is `undefined` after the `exit` event is
|
|||
```js
|
||||
const child = utilityProcess.fork(path.join(__dirname, 'test.js'))
|
||||
|
||||
console.log(child.pid) // undefined
|
||||
|
||||
child.on('spawn', () => {
|
||||
console.log(child.pid) // Integer
|
||||
})
|
||||
|
@ -101,6 +103,8 @@ child.on('exit', () => {
|
|||
})
|
||||
```
|
||||
|
||||
**Note:** You can use the `pid` to determine if the process is currently running.
|
||||
|
||||
#### `child.stdout`
|
||||
|
||||
A `NodeJS.ReadableStream | null` that represents the child process's stdout.
|
||||
|
|
|
@ -255,6 +255,8 @@ void UtilityProcessWrapper::HandleTermination(uint64_t exit_code) {
|
|||
|
||||
if (pid_ != base::kNullProcessId)
|
||||
GetAllUtilityProcessWrappers().Remove(pid_);
|
||||
|
||||
pid_ = base::kNullProcessId;
|
||||
CloseConnectorPort();
|
||||
EmitWithoutEvent("exit", exit_code);
|
||||
Unpin();
|
||||
|
|
|
@ -240,13 +240,31 @@ describe('utilityProcess module', () => {
|
|||
it('is valid when child process launches successfully', async () => {
|
||||
const child = utilityProcess.fork(path.join(fixturesPath, 'empty.js'));
|
||||
await once(child, 'spawn');
|
||||
expect(child.pid).to.not.be.null();
|
||||
expect(child).to.have.property('pid').that.is.a('number');
|
||||
});
|
||||
|
||||
it('is undefined when child process fails to launch', async () => {
|
||||
const child = utilityProcess.fork(path.join(fixturesPath, 'does-not-exist.js'));
|
||||
expect(child.pid).to.be.undefined();
|
||||
});
|
||||
|
||||
it('is undefined before the child process is spawned succesfully', async () => {
|
||||
const child = utilityProcess.fork(path.join(fixturesPath, 'empty.js'));
|
||||
expect(child.pid).to.be.undefined();
|
||||
await once(child, 'spawn');
|
||||
child.kill();
|
||||
});
|
||||
|
||||
it('is undefined when child process is killed', async () => {
|
||||
const child = utilityProcess.fork(path.join(fixturesPath, 'empty.js'));
|
||||
await once(child, 'spawn');
|
||||
|
||||
expect(child).to.have.property('pid').that.is.a('number');
|
||||
expect(child.kill()).to.be.true();
|
||||
|
||||
await once(child, 'exit');
|
||||
expect(child.pid).to.be.undefined();
|
||||
});
|
||||
});
|
||||
|
||||
describe('stdout property', () => {
|
||||
|
|
Загрузка…
Ссылка в новой задаче