通过 nodejs 子进程方式获取 被占用端口的 pid 和应用名称,同时区分环境 windows 和 mac。
提供给用户 pId 和 pName 让用户自己决定是 kill 进程 还是 提示使用者什么应用占用了端口。
const{execSync}=window.require('child_process');constos=window.require('os');constplatform=os.platform();constGetProcessInfo=(port)=>newPromise((resolve,reject)=>{if(platform==='win32'){constorder=`netstat-aon|findstr${port}`;try{conststdout=execSync(order);constportInfo=stdout.toString().trim().split(/\s+/);constpId=portInfo[portInfo.length-1];constprocessStdout=execSync(`tasklist|findstr${pId}`);const[pName]=processStdout.toString().trim().split(/\s+/);resolve({pId,pName,});}catch(error){reject(error);}}else{constorder=`lsof-i:${port}`;try{conststdout=execSync(order);const[pName,pId]=stdout.toString().trim().split(/\n/)[1].split(/\s+/);resolve({pId,pName,});}catch(error){reject(error);}}});module.exports=GetProcessInfo;