标签: kill-process

Python子进程查杀

我有杀死子进程的问题.以下代码用于创建子流程 -

  while(not myQueue.empty()): 
        p=Popen(myQueue.get(),shell=True,stdin=PIPE,stderr=PIPE)
Run Code Online (Sandbox Code Playgroud)

我通过迭代创建进程,直到队列(其中包含命令)为空.变量p是全局变量,是Popen类型的对象.即使命令完成了它应该做的事情,我也遇到了停止按钮的问题,这并没有像我预期的那样停止进程.

停止按钮代码如下 -

  stop=Button(textBoxFrame,text="Stop",width=5,command=stopAll)
  stop.grid(row=1,column=4)
Run Code Online (Sandbox Code Playgroud)

stopAll方法由上面的停止按钮调用,该按钮将终止当前子进程p.

  def stopAll():
        p.kill()
Run Code Online (Sandbox Code Playgroud)

注意 - 没有错误,例外或任何编译问题.

更新: 问题是p.kill()没有杀死我需要杀死的进程.我使用unix检查了这个>> ps aux.我也让我的程序输出启动和终止PID,以便我可以检查它们ps aux.我发现我需要杀死的进程是6个PID p.pid,我试图杀死os.kill((p.pid)+6,signal.SIGKILL)正在运行的进程并停止正确的进程.但我不想以这种方式做,因为有可能导致不同的子进程被杀死.我正在提供有关我的问题的更多细节 -

我在这里使用的队列包含我之前说过的命令.命令是这样的 -

    echo "Hello"|festival --tts
Run Code Online (Sandbox Code Playgroud)

Festival是unix中的语音合成器,festival --tts可以从文件中获取用户输入.我正在"Hello"为节日做准备,它正确地说出了这些话.但是p执行上述命令的过程是杀戮echo而不是festival.所以请帮我杀死特定的(节日)过程.

python user-interface tk-toolkit button kill-process

5
推荐指数
1
解决办法
731
查看次数

如何杀死第三方应用程序?

我的程序需要杀死一个特定的应用程序.是否可以在股票,无根设备上?如果是 - 如何?我知道它的进程名称和PID.

android process kill-process

5
推荐指数
1
解决办法
9290
查看次数

活动仍然在finish()之后继续;

我有一个测验应用程序,它有一个计时器用于整个游戏活动,你应该在指定的分钟内回答尽可能多的问题.

在指定的分钟结束后,它将带您进入显示您的分数的结果活动.在背面按下时,我创建了一个警告对话框,询问您是否要返回主菜单.如果单击是,则页面应返回主菜单并停止/终止游戏活动.

但是,当我单击"是"时,它将返回主菜单,但当您仍然在应用程序的任何位置时,结果仍将显示我之前的游戏活动.也许我还没有真正完成游戏活动,..这是我的活动中的计时器和背压片段:

new CountDownTimer(seconds, 1000) {
    public void onTick(long millisUntilFinished) {
             timer.setText("Seconds left: " + millisUntilFinished / 1000);
    }   
    public void onFinish() {
             Intent intent = new Intent(GameActivityAddition.this, Score.class);
             intent.putExtra("totalscore", score);
             intent.putExtra("numberquestions", rowId);
             intent.putExtra("d", difficulty);
             db.close();
             startActivity(intent);
    }
}.start();

@Override
public void onBackPressed() {
    AlertDialog.Builder abuilder = new Builder(GameActivityAddition.this);
    abuilder.setMessage("Return to Main Menu?");
    abuilder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {

        public void onClick(DialogInterface dialog, int which) {
            Intent main = new Intent(GameActivityAddition.this, Main.class);
            startActivity(main);
            finish();           
        }
    });
    abuilder.setNegativeButton("No", new DialogInterface.OnClickListener() {

        public …
Run Code Online (Sandbox Code Playgroud)

android kill-process android-activity

5
推荐指数
1
解决办法
4999
查看次数

bash:在while循环中反击(kill和kill -9)

所以我最近了解到kill不是同步命令,所以我在bash中使用while循环,这很棒:

while kill PID_OF_THE_PROCESS 2>/dev/null; do sleep 1; done
Run Code Online (Sandbox Code Playgroud)

但是,有些情况(非常罕见,但它们仍然会发生),其中进程被卡住,并且它不会对kill信号起作用.在这些情况下,杀死应用程序的唯一方法是使用" kill -9 ".

所以我想知道,如果循环已达到第10次迭代,如何在bash中修改上面的while循环以使用-9参数?

bash scripting kill while-loop kill-process

5
推荐指数
1
解决办法
5595
查看次数

用户空间进程上的Linux内核模块信号被杀死

我想知道是否有一个钩子可以在Linux内核模块中使用,当用户空间应用程序/进程被杀死时会被触发?

hook linux-kernel kill-process

5
推荐指数
1
解决办法
1422
查看次数

使用SIGKILL杀死父进程和子进程

我正在编写一个shell脚本,其中我有父进程,并且它具有由sleep &命令创建的子进程.现在我想杀死父进程,以便子进程也将被杀死.我能用以下命令做到这一点:

trap "kill $$" SIGINT
trap 'kill -HUP 0' EXIT
trap 'kill $(jobs -p)' EXIT
Run Code Online (Sandbox Code Playgroud)

这些命令正在使用kill [parent_process_ID]命令但如果我使用kill -9 [parent_process_ID]那么只有父进程将被终止.请进一步指导我实现此功能,以便当我使用任何命令终止父进程时,也应该杀死子进程.

unix linux shell pid kill-process

5
推荐指数
2
解决办法
2万
查看次数

终止Qt过程:Windows任务管理器在做什么我不是?

我有一个应用程序,其工作是启动和停止各种其他进程.

问题是Qt应用程序不能完全停止.Qt窗口关闭,但进程仍然在后台运行,直到调用TerminateProcess(),然后Qt应用程序退出而不进行清理.

我正在使用Microsoft概述的这种方法.甚至Qt源也使用该方法来终止进程,除了它们还将WM_CLOSE发布到主线程.我已将其添加到我的应用程序中,但它仍然只是关闭窗口,离开了该过程.

我觉得有趣的是,如果我使用Windows任务管理器来"结束任务"(不是"结束进程"),窗口关闭,进程也结束,所以我知道这是可能的.如果我使用spy ++我可以看到主窗口和主线程都从任务管理器和我的应用程序接收WM_CLOSE消息,但只有使用任务管理器,消息继续到WM_DESTROY,WM_NCDESTROY等,最后结束进程结束.这个问题只发生在Qt应用程序中.Win32/MFC等应用程序使用我的应用程序干净地终止.

你应该如何干净地关闭Qt应用程序(假设Qt应用程序源不可用)?

- - - - 编辑 - - - -

这里有一些示例代码可以重现问题.至少,我有兴趣知道其他人是否看到了我所看到的同样问题.

示例代码启动CMake(此处下载),但任何Qt应用都应该这样做.

#include <Windows.h>
#include <iostream>

BOOL CALLBACK TerminateAppEnum(HWND hwnd, LPARAM pid);

int _tmain(int argc, _TCHAR* argv[])
{
  char* processName = "C:\\Program Files (x86)\\CMake\\bin\\cmake-gui.exe";
  //char* processName = "C:\\Windows\\Notepad.exe";

  std::cout << "Creating process \"" << processName << "\"" << std::endl;

  STARTUPINFO si = {0};
  si.cb = sizeof(STARTUPINFO);
  PROCESS_INFORMATION pi = {0};

  BOOL success = CreateProcess(processName,
                               "",
                               NULL,
                               NULL, …
Run Code Online (Sandbox Code Playgroud)

c++ windows winapi qt kill-process

5
推荐指数
1
解决办法
1610
查看次数

Process.Kill抛出Win32Exception(访问被拒绝)

我有以下代码:

foreach (var process in Process.GetProcessesByName(name))
{
    try
    {
        process.Kill();
        if (!process.WaitForExit(timeout))
        {
            session.Log("Killing process {0} timed out.", name);
        }
        else
        {
            session.Log("Killing process {0} finished successfully.", name);
        }
    }
    catch (Exception exception)
    {
        session.Log("Exception while trying to kill process {0}: {1}", name, exception.ToString());
    }
}
Run Code Online (Sandbox Code Playgroud)

Process.Kill抛出以下异常:

Exception while trying to kill process <process name>: System.ComponentModel.Win32Exception (0x80004005): Access is denied
   at System.Diagnostics.Process.Kill()
   at CustomActions.CustomActions.KillAllProcesses(String name, Session session, Nullable`1 wait)
Run Code Online (Sandbox Code Playgroud)

代码通常有效,但奇怪的是它失败了.它是我构建的安装程序的自定义操作的一部分,当它运行时,它在本地系统帐户下运行.我在过去看过Process.Kill会发生这种情况.我知道有一些替代品.我不能修改有问题的过程的代码,所以我自己终止它,但我觉得合适.如果我不关心将它留在某个中间状态,因为我正在从系统中卸载它的文件,那么最好的方法来预防需要尽快死掉的进程?如果在全局级别为应用程序设置任何设置并且用户进行升级,则应允许任何IO完成或取消.P/Invoking TerminateProcess是最好的解决方案吗?

.net c# pinvoke process kill-process

5
推荐指数
0
解决办法
5615
查看次数

Android DownloadManager对应的上载

androids DownloadManager是否有对应版本?我想开始上传文件,并且当应用被终止时,上传应该继续。它应该提供类似的可能性,例如设置标题,进度通知,通知中心集成等。

我找到了https://github.com/alexbbb/android-upload-service,但它使用的是ServiceIntent。因此,当应用被终止时,它将停止工作。还是我理解不对?

如果没有对手:编写独立于应用程序状态运行的后台服务的最佳方法是什么?我看过Services,AsyncTask,ServiceIntent,但是当应用程序死后,所有这些都将停止!

service android background-service kill-process asyncfileupload

5
推荐指数
0
解决办法
839
查看次数

如何从批处理文件中打开和关闭Internet Explorer?

我有一个批处理文件,必须启动Internet Explorer并打开www.google.com.当整个页面加载完成时,它应该终止IE进程,即关闭该系统中IE的所有实例.我的批处理文件有以下两行.

iexplore.exe "www.google.com"
taskkill /IM iexplore.exe /F
Run Code Online (Sandbox Code Playgroud)

但是在加载后它没有关闭IE实例.

如果我有单独的taskkill/IM iexplore.exe/F单独的批处理文件.此批处理文件关闭IE实例.

First Batch文件出了什么问题.

PS批处理文件位于程序文件的Internet Explorer文件夹中.

internet-explorer cmd batch-file taskkill kill-process

5
推荐指数
1
解决办法
4万
查看次数