精华内容
下载资源
问答
  • QT 窗口关闭 程序进程不退出

    千次阅读 2018-02-12 18:37:35
    QT程序,窗口关闭程序不退出只需设置QApplication::setQuitOnLastWindowClosed(false);

    QT程序,窗口关闭,程序不退出

    只需设置


    QApplication::setQuitOnLastWindowClosed(false);

    展开全文
  • 最近在做一个工具用于控制mcu,这其中肯定就需要open端口,所以不能同时打开一个设备,所以在发布程序后,打开设备后关闭QT的UI界面,再次打开程序进行连接设备的时候出现open设备失败的问题。 第一次打开设备: ...

        最近在做一个工具用于控制mcu,这其中肯定就需要open端口,所以不能同时打开一个设备,所以在发布程序后,打开设备后关闭QT的UI界面,再次打开程序进行连接设备的时候出现open设备失败的问题。

    第一次打开设备:

        关闭应用再次连接设备:

     

        后面查看了问题,是因为关闭UI界面后并没有退出进程,在后台它依然是运行着的。所以就尝试了很多方法,比如网上各种强制关闭进程的方法依然不行。

    关闭应用后,后台其实依然运行着程序:

        后来找到原因是因为进程退出的时候销毁线程的顺序出了问题。

        如下,我先等待线程退出才销毁线程,但是此时线程处于死循环状态。怎么会退出,导致了线程无法销毁的情况。

    因此需要先delete线程,然后在等待退出等操作。

     

    展开全文
  • linux下C++根据pid关闭程序进程

    千次阅读 2018-07-12 14:24:15
    //给pid所指的进程发送SIGABRT(中止一个程序)信号 wait(&status); if(WIFSIGNALED(status)) printf(“chile process receive signal %d\n”,WTERMSIG(status)); } } 执行 send signal to child process(3170) Hi ...
    #include<unistd.h>
    #include<signal.h>
    #include<sys/types.h>
    #include<sys/wait.h>
    main()
    {
    pid_t pid;
    int status;
    if(!(pid= fork())){
    printf(“Hi I am child process!\n”);
    sleep(10);
    return;
    }
    else{
    printf(“send signal to child process (%d) \n”,pid);
    sleep(1);
    kill(pid ,SIGABRT);    //给pid所指的进程发送SIGABRT(中止一个程序)信号
    wait(&status);
    if(WIFSIGNALED(status))
    printf(“chile process receive signal %d\n”,WTERMSIG(status));
    }
    }


    执行 send signal to child process(3170)
    Hi I am child process!
    child process receive signal 6
    展开全文
  • Ubuntu关闭指定程序进程

    千次阅读 2019-01-27 01:10:19
    有时候我们需要通过命令行关闭特定进程,对于指定进程号的关闭很容易,但是如果需要关闭指定的程序或者关闭指定路径下的程序则变得不那么容易,下面我们将会对此进行讨论。另外,很多方式都会有权限限制,所以可以...

    前言

    有时候我们需要通过命令行关闭特定进程,对于指定进程号的关闭很容易,但是如果需要关闭指定的程序或者关闭指定路径下的程序则变得不那么容易,下面我们将会对此进行讨论。另外,很多方式都会有权限限制,所以可以适时采用sudo方式执行。

    1.进程资源监控

    1.1 gnome-system-monitor

    gnome-system-monitor是Ubuntu系统自带的资源管理器,可以让我们在界面中动态查看所有进程资源以及计算内存消耗情况,可直接在命令行中输入gnome-system-monitor

    1548515584058

    1548515605903

    1548515617181

    可以看见,以上内容能够很容易帮我们监控系统资源,但是如果我们需要将监控级别设定到指定程序级别,则需要对该界面进行相关配置:

    • 左上角显示设置

      我们可以通过左上角的按钮查询指定程序的进程号,也可以显示出每一个进程的执行命令行信息:

      1548515819111

      1548515869298

    • 右上角筛选设置

      默认显示的是当前用户所有的进程信息,但如果想知道当前活跃的进程信息,并显示父子进程的依赖关系,我们可以通过右上角按钮选择:

      1548515955559

    1.2 top

    top也是Ubuntu系统自带的一个系统资源监控指令,同样是在命令行执行:

    1548516050502

    其中上方的%Cpu的意义如下:

    us — 用户空间占用CPU的百分比。
    sy — 内核空间占用CPU的百分比。
    ni — 改变过优先级的进程占用CPU的百分比
    id — 空闲CPU百分比
    wa — IO等待占用CPU的百分比
    hi — 硬中断(Hardware IRQ)占用CPU的百分比
    si — 软中断(Software Interrupts)占用CPU的百分比
    

    而下方的则是各个进程的详细信息,其中要注意的是:

    PID: 进程号
    USER: 进程所有者
    PR: 进程优先级
    VIRT: 进程所占虚拟内存大小,单位:B
    RES: 进程所占物理内存大小,单位:B
    SHR: 进程所占共享内存大小,单位:B
    %CPU: 进程所占CPU使用率
    %MEM:进程所占内存使用率
    TIME+: 进程启动后所占总的CPU时间
    COMMAND: 进程命令名
    

    特别的,键盘按下1会显示所有核的信息,按下q会退出当前窗口。

    1.3 htop

    htop相对top来说,是一个更加清晰的系统资源监控器,不过需要先安装:

    sudo apt install htop
    

    同样在命令行执行:

    1548516682654

    2.利用进程号关闭进程

    指定进程号,如果要关闭其对应进程,只需要执行:

    kill 进程号
    kill -15 进程号
    

    以上两种方式会关闭正在执行的进程,不过依然会有部分程序会延时相应,或者不相应,所以我们可以强制关闭:

    kill -9 进程号
    

    进程号一定要填,不然默认关闭所有进程,包括我们的系统进程。

    3.利用程序名关闭进程

    3.1 直接关闭

    Ubuntu提供了直接关闭进程的指令killallpkill

    killall 进程名
    pkill 进程名
    

    不过这两个方法有三个缺点:

    • 进程名指的是执行命令的名称,并不是命令行,即:

      python test.py =>python
      
    • 进程名如果超过15个字符会自动截断:

      killall bt_uinfo_memcached x
      killall bt_uinfo_memcac √
      
    • 对于图形界面等关闭不了,因为属于tty,不属于command。

    3.2 先查找再关闭

    • 我们在第一章介绍gnome-system-monitor时,提到其自带查找进程号的功能,即search for open files;

    • Ubuntu提供了一种简单完全匹配工具pidof:

      pidof 进程名
      

      注意这里的进程名必须是完整的名称,如:python

    • Ubuntu还提供了命令行工具进行查找:

      ps -e | grep 进程名
      ps -ef | grep 进程名
      

      1548518549579

      1548518423771

    我们可以看到,仅仅-e所能匹配的进程不全,但是-ef能匹配更详细的命令行信息,更重要的是这种方式不是完整匹配,而是部分匹配。

    • 对于ps -e,Ubuntu提供了更简洁的用法:

      pgrep 进程名
      pgrep -a 进程名
      

      1548518865856

      1548518904099

      pgrep的缺点在于,无法实现ps -ef的命令行匹配功能,其优点在于可以只打印进程号,方便后续关闭。

    • 我们如果既想拥有pgrep那样直接打印进程号的简洁,又想拥有ps -ef |grep方式匹配完整命令行的强大,可以利用awk语言编程实现,利用进程号在第二列的特性:

      ps -ef | grep 进程信息 |awk '{print $2}'
      

      1548519375467

    有了这些进程的查找方式,那么关闭进程就很容易了,那么,如果我们想要一次性执行查找和关闭怎么办?可以利用xargs命令:

    pidof python |xargs kill -9
    pgrep python |xags kill -9
    ps -ef |grep python |awk '{print $2}'|xargs kill -9
    

    4.利用python关闭进程

    4.1 os系统指令

    python自身可以利用os模块的system功能执行命令行指令,如:

    os.system('kill -9 进程号')
    

    另外Python也可以获取自身程序的进程号:

    os.getpid()
    

    4.2 psutil库

    psutil库能够轻松实现获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息,它主要用来做系统监控,性能分析,进程管理。其安装方式如下:

    pip install psutil
    

    这里我不介绍其详细功能,只介绍如何利用其关闭特定进程。

    • 获取当前系统所有进程:

      psutil.pids()
      

      返回所有进程号列表。

    • 获取每个进程的详细信息:

      psutil.Process(进程号)
      

      1548520601287

      返回的是该进程所对应的类,通过观察其属性可见,有很多信息可以利用:

      1548521312890

    那么我们可以这样进行匹配,假如我们要关闭包含train字样的python进程,那么可以:

    import psutil
    import os
    for i in psutil.pids():
        try:
            p = psutil.Process(i)
            if p.name() == 'python' and 'train' in ''.join(p.cmdline()):
                os.system('kill -9 '+str(i))
        except Exception:
            pass
    

    之所以要加入保护,是因为进程随时都处于启动和关闭状态,有的进程可能在处理过程中关闭了。

    来源:我的博客


    展开全文
  • python 关闭exe程序进程

    千次阅读 2020-07-03 09:23:30
    python 关闭exe程序进程 import os def kill_exe(exe_name):     """     杀死exe进程     :param exe_name:进程名字     :return:无   &...
  • ubuntu系统强制关闭程序或窗口 $ps -aux 查看所有运行的进程 $kill -9 (PID) 杀死进程号为PID的进程 $killall (program) killall 加上程序的名字,直接杀掉所有进程 $pkill (program) pkill 加上程序的名字,方法...
  • 将Quartz.NET组建引入到WinFrom中时,遇到个问题,关闭程序后,进程任未结束。 解决办法:在窗体关闭时,把调度器关闭就不会存在进程了。 private void FormMain_FormClosing ( object sender , FormClosingE
  • 安装前判断进程,dll文件放在inno的安装目录中 Source: compiler:IsTask.dll; Flags: dontcopy noencryption [code] //安装前判断是否有进程正在运行,istask.dll文件放到innosetup安装目录 fun
  • 1. 程序开启了进程进程中使用了while(1),在程序退出时未能关闭该线程 方法: 在主进程类的析构函数结束该线程 2. 程序的消息队列未销毁引起 使用了GetMessage创建了消息队列,但在程序退出时没有及时处理完...
  • kill -9 程序直接进行关闭,没有给进程留下一点回旋的余地,这样很糟糕,程序需要进行资源的回收可能会导致一些问题 例如资源开启后一般有资源后期处理,内存数据,日志,数据完整性 kill -9 杀程序 万不得已...
  • 在很多情况下,C#程序在应用程序完成后,因为某些线程任务没完成,所以用户看到程序窗口已经关了,但打开任务管理器会...如遇到这类情况,可以用以下代码,在程序结束操作完成后彻底的关闭程序,释放资源 using System....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 518,572
精华内容 207,428
关键字:

关闭程序进程