execProcessKillPid.mjs

import cstr from './cstr.mjs'
import execProcess from './execProcess.mjs'


/**
 * Windows下強制關閉指定PID程序
 *
 * Unit Test: {@link https://github.com/yuda-lyu/wsemi/blob/master/test/execProcessKillPid.test.mjs Github}
 * @memberOf wsemi
 * @param {String} pid 輸入程序pid字串
 * @returns {Promise} 回傳Promise,resolve回傳成功訊息,reject回傳錯誤訊息
 * @example
 * //need test in nodejs
 *
 * if (true) {
 *     let pid = 123456
 *     execProcessKillPid(pid)
 *         .then(function(data) {
 *             console.log('then', data)
 *         })
 *         .catch(function(data) {
 *             console.log('catch', data)
 *         })
 * }
 *
 */
async function execProcessKillPid(pid) {

    //execProcess, 執行windows指令taskkill去中止pid, 不論是哪種mode都有機率觸發「ERROR: The process "{pid}" not found.」
    let cmd = 'taskkill'
    let args = ['/pid', cstr(pid), '/T', '/F']
    let r = await execProcess(cmd, args) //預設spawn
    // let r = await execProcess(cmd, args, { mode: 'spawn' })
    // let r = await execProcess(cmd, args, { mode: 'exec' })
    // let r = await execProcess(cmd, args, { mode: 'exec', useChcp:true })
    // let r = await execProcess(cmd, args, { mode: 'execFile' })
    // console.log('r', r)

    return r
}


export default execProcessKillPid