【问题标题】:Kill process by ID in argument on windows在 Windows 的参数中按 ID 杀死进程
【发布时间】:2018-03-04 17:02:56
【问题描述】:

我想编写一个按 ID 杀死进程的程序。 当我通过 name.exe [pid] 运行它时,它不起作用。这是我的代码:

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

当我不写行时

DWORD pid = argv[1];

并以这种方式将pid号作为第三个参数,例如1243:

HANDLE handleOfMyProcess = OpenProcess(PROCESS_TERMINATE, FALSE, 1243);

它有效。

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

【问题讨论】:

  • DWORD pid = atio(argv[1]); 会更好(即使 atoi 很糟糕,它也比将 char 指针转换为 DWORD 更糟糕)
  • argv[1] 是一个字符串 (char *) 你应该把它转换成一个 int。
  • 虽然不是那么糟糕的问题(好的 OP 应该阅读警告,但也许他/她正在使用 Turbo C :))

标签: c process operating-system terminate


【解决方案1】:

因为main的参数是字符串,所以不能直接给DWORD赋值;你必须转换它。

main 的定义表明:

int main(int argc, char *argv[]);

你可以用atoi进行转换:

    DWORD pid= atoi(argv[1]);

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

【讨论】:

  • 我想请你回答。不是那么糟糕的问题,并且可以回答。也许您可以详细说明为什么它仍然可以编译(指针 => DWORD)
猜你喜欢
  • 2012-06-13
  • 1970-01-01
  • 2010-09-08
  • 2019-08-14
  • 2012-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多