Rumah  >  Artikel  >  hujung hadapan web  >  nodejs menutup aplikasi lain

nodejs menutup aplikasi lain

PHPz
PHPzasal
2023-05-11 20:08:36839semak imbas

Artikel ini akan memperkenalkan cara menutup aplikasi lain menggunakan Node.js. Dalam aplikasi sebenar, fungsi tersebut boleh digunakan untuk melindungi keselamatan sistem, mengurus status pengendalian sistem, atau atas pelbagai sebab lain. Dalam Node.js, anda boleh melaksanakan program luaran dengan menggunakan kaedah exec modul child_process. Sudah tentu, apabila melakukan operasi sedemikian, perhatian khusus perlu diberikan untuk mempertimbangkan dan menilai keselamatan sistem untuk mengelakkan masalah yang tidak perlu.

Langkah 1: Perkenalkan modul child_process
Dalam Node.js, anda boleh melaksanakan arahan sistem dengan memperkenalkan modul child_process. Anda boleh menambah kod berikut pada permulaan kod:

const { exec } = require('child_process');

Langkah 2: Cari ID proses yang perlu ditutup
Sebelum melaksanakan operasi menutup program lain, anda perlu mendapatkan proses ID program ini. Anda boleh menyenaraikan semua proses yang berjalan dalam sistem semasa dengan melaksanakan arahan "ps -A". Dalam sistem Linux, setiap proses mempunyai ID proses (PID) yang unik. Kita boleh melakukan operasi penutupan dengan mencari PID yang sepadan dengan nama program. Anda boleh menggunakan kod berikut untuk mencari PID proses:

exec('pidof <AppName>', (err, stdout, stderr) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log(stdout);
});

Dalam kod di atas, "96c7a35f730d136b52d64994d1e4a36d" menunjukkan nama program yang perlu ditemui. Apabila arahan ini dilaksanakan, output akan menjadi ID proses program. Apabila program tidak wujud, output akan menjadi rentetan kosong.

Langkah 3: Tutup program lain
Selepas kami memperoleh PID program yang perlu ditutup, kami boleh melaksanakan arahan "bunuh PID" untuk menutupnya. Dalam sistem Linux, anda boleh menggunakan kod berikut untuk menutup proses dengan PID tertentu:

exec('kill <PID>', (err, stdout, stderr) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log(stdout);
});

Dalam kod di atas, "bed08b0deaa559fa022c3f83f9c03e86" mewakili ID proses program yang perlu ditutup turun. Apabila arahan ini dilaksanakan, output akan menjadi rentetan kosong. Selepas pelaksanaan selesai, jika anda perlu melakukan langkah sebelumnya sekali lagi untuk meneruskan menutup proses lain, anda boleh menggunakan rekursi atau gelung untuk mencapai ini.

Langkah 4: Lengkapkan kod sampel

const { exec } = require('child_process');

const closeApp = (appName) => {
  exec(`pidof ${appName}`, (err, stdout, stderr) => {
    if (err) {
      console.error(err);
      return;
    }
    // 当前程序的PID
    const curPID = process.pid;
    // 查找到的所有程序PID数组
    const pidList = stdout
      .split('
')
      .filter((pid) => pid && pid !== String(curPID));
    if (pidList.length > 0) {
      pidList.forEach((pid) => {
        exec(`kill ${pid}`, (err, stdout, stderr) => {
          if (err) {
            console.error(err);
            return;
          }
          console.log(`${pid} is killed`);
        });
      });
    } else {
      console.log(`No ${appName} process is found`);
    }
  });
};

// 以Chrome浏览器为例进行测试
closeApp('chrome');

Dalam kod di atas, kami menggunakan fungsi closeApp untuk melaksanakan operasi menutup program lain. Apabila mencari PID program yang perlu ditutup, kami juga secara khusus menentukan PID program semasa untuk mengelakkan penutupan proses semasa secara tidak sengaja. Selepas mencari PID program yang perlu ditutup, kami menggunakan forEach untuk melintasi senarai PID dan kemudian melakukan operasi penutupan satu demi satu.

Di atas ialah cara menggunakan Node.js untuk menutup aplikasi lain Sudah tentu, dalam aplikasi sebenar, butiran lanjut dan isu keselamatan perlu dipertimbangkan. Kami berharap pembaca dapat menjalani penilaian dan ujian keselamatan yang mencukupi sebelum kod dilaksanakan untuk memastikan ketepatan dan kebolehpercayaan program.

Atas ialah kandungan terperinci nodejs menutup aplikasi lain. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn