33import psTree from "ps-tree"
44import { exec } from "child_process"
55
6- export const getProcessList = async ( pid : number ) => {
7- const promise = new Promise < string > ( ( resolve , reject ) => {
8- exec ( `ps -p ${ pid } -o pid=` , ( err , stdout , stderr ) => {
9- if ( err ) {
10- reject ( stderr )
6+ const asyncExec = ( command : string ) : Promise < { stdout : string ; stderr : string } > =>
7+ new Promise ( ( resolve , reject ) => {
8+ exec ( command , ( error , stdout , stderr ) => {
9+ if ( error ) {
10+ reject ( error )
11+ } else {
12+ resolve ( { stdout, stderr } )
1113 }
12-
13- resolve ( stdout )
1414 } )
1515 } )
1616
17+ export const getProcessList = async ( pid : number ) => {
1718 try {
18- await promise
19- } catch ( _ ) {
20- return null
21- }
19+ await asyncExec ( `ps -p ${ pid } -o pid=` )
2220
23- return new Promise < number [ ] > ( ( resolve , reject ) => {
24- psTree ( pid , ( err , children ) => {
25- if ( err ) {
26- reject ( err )
27- }
21+ return new Promise < number [ ] > ( ( resolve , reject ) => {
22+ psTree ( pid , ( err , children ) => {
23+ if ( err ) {
24+ reject ( err )
25+ }
2826
29- resolve ( children . map ( ( p ) => parseInt ( p . PID ) ) )
27+ resolve ( children . map ( ( p ) => parseInt ( p . PID ) ) )
28+ } )
3029 } )
31- } )
30+ } catch ( _ ) {
31+ return null
32+ }
3233}
3334
3435export const killProcessTree = async ( pid : number ) => {
@@ -39,8 +40,16 @@ export const killProcessTree = async (pid: number) => {
3940 }
4041
4142 if ( descendants . length > 0 ) {
42- await exec ( `kill -9 ${ descendants . join ( " " ) } ` )
43+ try {
44+ await asyncExec ( `kill -9 ${ descendants . join ( " " ) } ` )
45+ } catch ( error ) {
46+ console . error ( "Error killing descendant processes:" , error )
47+ }
4348 }
4449
45- await exec ( `kill -9 ${ pid } ` )
50+ try {
51+ await asyncExec ( `kill -9 ${ pid } ` )
52+ } catch ( error ) {
53+ console . error ( "Error killing main process:" , error )
54+ }
4655}
0 commit comments