在Windows的参数中按ID杀死进程

时间:2018-03-04 17:02:56

标签: c process operating-system terminate

我想写一个程序,用Id杀死进程。 当我通过name.exe [pid]运行它时,它无法正常工作。这是我的代码:

#include <sstream>
#include <string>
#include <stdlib.h>

void setProcessName (pid_t pid, std::string name)
{
    std::ostringstream cmd;
    cmd << "/usr/bin/lsappinfo setinfo " << pid;
    cmd << " --name \"" << name << "\"";
    system (cmd.str().c_str());
}

当我不写行

      int main(int argc, char *argv[])
    {
        DWORD pid = argv[1];
        HANDLE handleOfMyProcess = OpenProcess(PROCESS_TERMINATE, FALSE, pid);
        TerminateProcess(handleOfMyProcess, 5);
    }

并将pid号作为第三个参数,例如1243:

DWORD pid = argv[1];

它有效。

我的问题是为什么第一种方式不起作用?

1 个答案:

答案 0 :(得分:2)

因为main的参数是字符串,所以不能直接将参数赋给 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:template match="description"> <xsl:analyze-string select="." regex="(\w+)\s+=\s*Computer name"> <xsl:matching-substring> <xsl:value-of select="regex-group(1)" /> </xsl:matching-substring> <xsl:non-matching-substring> </xsl:non-matching-substring> </xsl:analyze-string> </xsl:template> </xsl:stylesheet> ;你将不得不转换它。

DWORD的定义表明了这一点:

main

您可以使用int main(int argc, char *argv[]); 转换它:

atoi

你必须打开编译器的警告,因为编译器会给你一个警告