extern "C" int k_kill_process_by_id(int pid, int timeout /*= 0*/) { boost::filesystem::path cmdpath(getenv("ComSpec")); char kill_process_arg[64] = { 0 }; std::sprintf(kill_process_arg, kill_process_format, timeout + 1, pid); koo_process vp("killtask", cmdpath.parent_path().string(), "taskkill.exe", kill_process_arg); return vp.start_once(timeout); }
extern "C" int k_kill_process(const std::string& process_name, int timeout /*= 1000*/) { boost::filesystem::path cmdpath("/usr/bin"); char kill_process_arg[64] = {0}; std::sprintf(kill_process_arg, kill_process_format, process_name.c_str()); koo_process vp("killtask", cmdpath.parent_path().string(), "killall", kill_process_arg); return vp.start_once(timeout); }
static void pipeadd(Pipe *p, char *cmd, char *fmt, ...) { char buf[Bufsz]; va_list ap; va_start(ap, fmt); int n = vsnprintf(buf, Bufsz, fmt, ap); va_end(ap); char cmdbuf[Bufsz]; int cmdsz = cmdpath(cmdbuf, Bufsz, cmd); if ((n+4+cmdsz) > Bufsz - p->n) fatal("Buffer is too small"); strcat(p->cmd + p->n, cmdbuf); strcat(p->cmd + p->n + cmdsz, " "); strcat(p->cmd + p->n + cmdsz + 1, buf); strcat(p->cmd + p->n + cmdsz + 1 + n, " | "); p->n += n + cmdsz + 4; }