首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在不使用popen()或system()的情况下按名称查找进程的PID

在不使用popen()或system()的情况下按名称查找进程的PID,可以使用以下方法:

  1. 使用C++的Boost库中的process库

Boost.Process是一个C++库,用于管理和控制操作系统进程。它提供了一个简单的API,用于创建、监控和检索进程信息。以下是一个示例代码,演示如何使用Boost.Process库查找进程的PID:

代码语言:c++
复制
#include<boost/process.hpp>
#include<boost/process/environment.hpp>
#include<iostream>
#include<string>

int main() {
    std::string process_name = "notepad.exe";
    boost::process::context ctx;
    boost::process::environment env = ctx.environment();
    std::string cmd = "WMIC PROCESS WHERE \"name='" + process_name + "'\" GET ProcessId";
    boost::process::ipstream is;
    boost::process::child c(cmd, boost::process::std_out > is);
    std::string pid;
    is >> pid;
    std::cout << "PID of "<< process_name << " is "<< pid<< std::endl;
    return 0;
}
  1. 使用Windows API

Windows API提供了一个名为CreateToolhelp32Snapshot的函数,可以创建一个包含所有当前进程信息的快照。然后,可以使用Process32First和Process32Next函数遍历快照中的进程,查找具有特定名称的进程并获取其PID。以下是一个示例代码,演示如何使用Windows API查找进程的PID:

代码语言:c++
复制
#include<windows.h>
#include <tlhelp32.h>
#include<iostream>
#include<string>

int main() {
    std::string process_name = "notepad.exe";
    HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    PROCESSENTRY32 process_entry;
    process_entry.dwSize = sizeof(PROCESSENTRY32);
    if (Process32First(snapshot, &process_entry)) {
        do {
            if (process_entry.szExeFile == process_name) {
                std::cout << "PID of "<< process_name << " is "<< process_entry.th32ProcessID<< std::endl;
                break;
            }
        } while (Process32Next(snapshot, &process_entry));
    }
    CloseHandle(snapshot);
    return 0;
}

这两种方法都可以在不使用popen()或system()的情况下按名称查找进程的PID。

相关搜索:无法在python中按名称获取进程的PID使用Popen在没有控制台的情况下在pythonw中运行进程有没有办法在不处理错误的情况下按索引值查找?在不冻结主线程的情况下创建并主动使用进程在不丢失元素名称的情况下查找列表中的唯一元素在不按Enter键或移动焦点的情况下应用新单元格值如何使用Jquery在id、名称或类不同的情况下获取特定的表头文本Selenium在不增加迭代时间的情况下使用find_element查找循环中的元素在不知道sql server数据库中的表或列名称的情况下查找像元值的位置在不使用split()或大量正则表达式的情况下查找单词数在不使用列表、函数或字典的情况下查找第二个最小的数字在python 3 (Windows)中,在不按Enter键的情况下使用带超时的输入提示来计算输入如何在xpath表达式中使用AND运算来查找在文章和进程文件夹中都有pid=1234的作者总数?是否可以在不使用stderr、stdin或stdout的情况下使用管道在两个进程之间创建通信流?如何在不按CTRL键的情况下使用ASP.NET在选择元素中选择多个项目?有没有一种方法可以在不使用名称空间std或使用std::前缀的情况下引用cout?是否可以使用JavaScript在客户关系管理的OOB查找对话框窗口中获取视图的名称或IDpygame -如何在不使用类/对象、Sprite或任何其他模块的情况下按顺序显示存储在列表中的png图像?在Laravel 8中,如何使用输入的值在不刷新页面或提交表单的情况下在同一页上呈现特定内容是否使用T-SQL、C#或Python在不超过一次命中表的情况下,对所有列的不同记录值进行计数?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 一些快速提高Android开发脚本与技巧(终端篇)

    以下脚本为打印某个应用日志,思路是将包名转为进程ip,然后过滤进程id即可。...Unix中有一个很棒查找工具,就是find,使用find,我们可以很快速查找某个目录下文件,支持通配符查找。...全文查找 Android中开发时,我们常常会遇到这样问题,比如我们需要将一个内容为”Settings”按钮调整padding,通常我做法是这样。...方法一: 查找内容为Settings字符串name 然后根据得到name查找所在布局文件代码文件 方法二: 使用DDMSmonitor查找viewid 然后根据id查找所在布局文件代码文件...上述两个脚本使用方法,比如我们想要查找app下,包含TextView文件,如下即可。

    80120

    python中subprocess

    程序通常执行序列字符串第一项,但可以通过使用明确参数进行设置。 UNIX上,shell = False(默认):在这种情况下,Popen使用os.execvp()来执行程序进程。...如果参数是一个序列,第一项指定命令字符串,其他将被视为附加shell命令参数。 Windows:Popen类通过使用CreateProcess()执行这个子进程来对字符串操作。...参数是PIPE , 这个属性是提供错误输出到子进程一个文件对象,否则为None pid     子进程PID returncode     子进程返回码。...Unix系统中, os.popen2, os.popen3 与 os.popen4 同样可以没有shell介入情况下直接传递给程序 以序列形式执行命令行 这种方法可以用下面的方法替换: (...Unix系统中, popen2 也可以没有shell介入情况下直接传递给程序以序列形式执行命令行.

    1.6K30

    Linux内核编程--管道pipe

    管道定义: 管道是一种进程间通信机制,也是Linux操作系统中一种文件形式。一个进程写入管道数据可以被另一个进程读取。数据先进先出顺序处理。Linux有两种形式管道文件,管道和FIFO。...管道FIFO都可以使用read/write函数访问,且读写操作都是顺序发生,从文件开头读取并在末尾写入(先进先出机制)。管道 FIFO 必须同时在读写两端打开。...管道成功创建时返回0 *有些版本操作系统可以创建全双工管道,使用socketpair函数创建 管道创建经典场景: 一个进程它派生一个多个子进程之前创建一个管道, 然后将管道用于父进程和子进程之间或两个兄弟进程之间通信...*单个进程使用管道与自己对话场景,没有实现意义 创建子进程函数fork() #include #include pid_t fork( void...,没有正常调用fork()pipe()时返回 NULL --popen()会调用fork()产生子进程,然后从子进程中调用/bin/sh -c来执行参数command指令 --参数type可使用"r

    3.8K10

    python模块之subprocess类与常量

    stdin, stdout, stderr参数特殊值,意味着使用管道重定向输入输出 subprocess.STDOUT:可传递给stderr参数特殊值,表示重定向标准错误到标准输出 Popen 一个新进程中执行子程序...如果是序列,则args中第一个元素是要执行程序;如果是字符串,解释执行与平台有关,POSIX系统args将被解释为要执行程序名称路径(前提是传递任何参数给程序)。...Windows系统,shell=True默认使用COMSPEC环境变量指定shell,一般是C:\WINDOWS\system32\cmd.exe。...0:始用缓冲 1:使用行缓冲 其他正整数:缓冲大小 负整数(默认):使用系统默认值 executable:使用shell=True场景很少。...如果传递给Popenstdin参数不是PIPE,此属性值为None stdout:与Popen.stdin相近,但stream对象是可读 stderr:与Popen.stdout相近 pid:子进程进程

    2.5K10

    Ruby执行shell命令六种方法

    Ruby中,执行shell命令是一件奇怪事情,Ruby提供了大概6种方法供开发者进行实现。这些方法都很简单,本文将具体介绍一下如何在Ruby脚本中进行调用终端命令。...system system和exec相似,但是system执行命令不会是在当前进程,而是一个新创建进程system会返回布尔值来表明命令执行结果是成功还是失败。...pid 11858 exit 1 => nil >> system会将进程退出状态码赋值给$?,如果程序正常退出,$?值为0,否则为非0。...反引号(`) 使用反引号是shell中常用获取命令输出内容方法,ruby中也是可以,而且一点都需要做改变。使用反引号执行命令也会将命令另一个进程中执行。...IO#popen IO#popen也是一种执行命令方法,其命令也是另外进程中执行。使用popen你可以像操作IO对象一样处理标准输入和输出。

    3.2K20

    Linux 命令(73)—— ps 命令

    不同类型选项可以自由混合,但可能会出现冲突。有一些同义选项,它们功能上是相同。 默认情况下,ps 选择与当前用户具有相同有效用户 ID(EUID)且与调用者终端关联所有进程。...它显示进程 ID(PID)、与进程相关联终端(TTY)、以 [DD-]hh:mm:ss 格式累积 CPU 时间(TIME)和可执行文件名(CMD)。默认情况下输出排序。...此选项只能与 -l 一起使用 输出修饰符(OUTPUT MODIFIERS) c 列出命令一栏 CMD 时,显示命令名称,而包含路径、命令参数修饰符。...如果以 pid 递减输出,可以指定 k -pid --sort -pid n 以数字表示 USER 和 WCHAN 列,包括 UID 和 GID -n namelist N namelist 设置查找内核函数名称文件...各列含义如下: UID 启动进程用户 ID PID 进程 ID PPID 父进程 ID C CPU 使用率,等于 CPU 所有核占用时间比上进程运行总时间,多核情况下可能会大于 100%。

    4.9K20

    Linux系统编程-进程创建(fork)、外部程序调用(exec)

    fork函数返回值如下: 1、进程中,fork返回新创建进程PID号。 2、进程中,fork返回0; 3、如果出现错误,fork返回一个负值。...因此可以通过返回值来判断是父进程还是子进程。 fork函数创建子进程过程: 使用fork函数得到进程是父进程一个复制品,它从父进程继承了进程所有资源,相当于就是父进程一个副本。...\n"); return 0; } 4. system函数 system函数用于启动新进程,这个函数内部就是使用fork+exec+wait函数组合实现。...$ pkill (3) 使用 killall 命令一次杀死指定名称所有进程 $ killall (4) 杀死父进程创建所有子进程 pkill -9 -P <父进程 PID...思路: 父进程扫描目录,得到目录下文件名称传递给子进程,子进程调用eog命令实现图片显示,父进程里2秒钟之后就杀死子进程,再读取目录下下一个文件,再传递给子进程……… #include <stdio.h

    3K20

    Linux下通过grep查找指定进程是否存在

    一、功能介绍 Linux通过命令查找指定进程是否存在,并返回该进程PID号。 程序中可以使用该方法监控指定程序是否在运行,如果异常退出,可以重新启动指定程序或者系统。...二、执行命令 2.1 shell脚本代码 #查找指定进程PID find_name=s_app #s_app就是要查找进程名称 pid_val=`ps -ef | grep $find_name..."查找进程不存在" fi 2.2 C语言代码 #include #include #include //查找指定进程PID号并返回...; //填入要查找应用程序名称 pid=find_pid("s_app"); if(pid==-1) { printf("查找错误,查找程序未能启动....$2}'` if [ ${pid_val} > 0 ] then echo "查找进程存在" else echo "查找进程不存在" #重新启动 /mnt/hgfs/linux-share-dir

    4.3K40

    python之调用系统命令 原

    一、python中执行cmd 目前我使用python中执行cmd方式有三种 使用os.system("cmd") 该方法调用完shell脚本后,返回一个16位二进制数,低位为杀死所调用脚本信号号码...使用os.popen调用test.sh情况:python调用Shell脚本,有两种方法:os.system(cmd)os.popen(cmd),前者返回值是脚本退出状态码,后者返回值是脚本执行过程中输出内容...subprocess.PIPE 创建Popen对象时,subprocess.PIPE可以初始化stdin, stdoutstderr参数,表示与子进程通信标准流。...Popen.pid 获取子进程进程ID。 Popen.returncode 获取进程返回值。如果进程还没有结束,返回None。...不管参数是一个路径还是文件 os.system() 函数用来运行shell命令 3.os进程 os模块包装了不同操作系统通用接口,使用不同操作系统下,可以使用相同函数接口,返回相同结构结果

    2.2K40

    基于pythonLinux系统指定进程性能监控思路详解

    IP和端口,必须和所监控服务同一台服务器上; BACKUP_COUNT:默认为9,即只保留最近9天监控结果; INTERVAL:两次监控时间间隔,默认为1s,主要用于cpu和内存监控,当同时监控多个端口进程时...,表明num为端口号;可以同时监控多个端口进程,多个端口进程用英文逗号隔开; totalTime:为监控总时间,单位为秒;如果传入totalTime,则默认一直监控; 2、查看监控结果 http...,type=port,表明num为端口号; system:表示查看系统监控结果;如果传了type和num,不管sysytem是否传值,都只能看到进程监控结果;传type和num,只传system,...注:由于进程可以开启多个线程,查看进程IO时,是看不到任何IO;而查看进程开启某个线程IO时,是可以看到IO,但是线程是一直是变化;故目前暂不支持监控指定进程IO。...,查找包含这段时间所有日志文件; (2)根据查找出来日志文件,找出包含监控结果所有日志; (3)画图时候遍历找出所有日志。

    1.2K43

    Python与DBA

    ,可选择提供命令行参数和环境变量 os.kill(pid, signal) 向给定 pid 发送 signal os.nice(value) 更改当前进程 nice 值 os.popen(command...path,environ) 一个新进程中运行 path 下程序(这些函数现在已被 subprocess 模块弃用) os.system(command) 此函数通过操作系统 system() 调用...Subprocess 以简单、可用并且相当通用接口取代 os.popen、os.spawn* 和 os.system 函数。...要查看命令状态,只需查看 returncode 属性。进程标识符 pid 属性下提供。...针对已创建进程方法包括用于查看进程是否仍在运行 poll()、用于程序完成时进行恢复 wait()、用于发送特定信号 send_signal(),以及分别用于发送 SIGTERM SIGKILL

    1.1K10

    python—subprocess、gl

    一、subprocess模块 1.subprocess以及常用封装函数 运行python时候,我们都是创建并运行一个进程。...subprocess包中定义有数个创建子进程函数,这些函数分别以不同方式创建子进程,所以我们可以根据需要来从中选取一个使用。...()       # 终止子进程 child.pid               #存储子进程PID 2.子进程文本流控制 子进程标准输入、标准输出和标准错误如下属性分别表示: child.stdin...child.stdout child.stderr 可以Popen()建立子进程时候改变标准输入、标准输出和标准错误,并可以利用subprocess.PIPE将多个子进程输入和输出连接在一起,构成管道...posix]])  使用类似shell语法分割字符串s,默认空格分隔,并且shlex.split()能识别引号,认为引号里为一个元素。

    1.5K20

    核心编程笔记(14.P

    python中有多种运行外部程序方法,比如,运行操作系统命令另外python脚本,执行一个磁盘上文件,通过网络来运行文件 特定执行场景包括: 在当前脚本继续运行 创建和管理子进程 执行外部命令程序...,如果我们要吧字符串读入变量中并执行内部操作把它存储到日志文件,我们可以使用popen() >>> import os >>> f = os.popen('uname -a') >>> data =...产生两个进程,都返回 if ret == 0# 子进程返回PID是0  child_suite# 子进程代码 else:# 父进程返回时子进程PID  parent_suite# 父进程代码...()进程中执行文件,以祖父串返回所有的输出 subprocess.call*()创建subprocess便捷函数,Popen等待命令完成,然后返回状态代码,与os.system()类似,但是是较灵活替代方案...,补丁级别,系统架构等等) getuid()/setuid(uid)获取/设置现在进程真正用户ID getpid()/getppid()获取真正现在/父进程ID(PID) getgid()/setgid

    64610

    linux c程序中获取shell脚本输出

    但是,system函数仅返回命令是否执行成功,而我们可能需要获得shell命令控制台上输出结果。例如,执行外部命令ping后,如果执行失败,我们希望得到ping返回信息。 2....(cmd_string);   }   这种使用使用了临时文件作为应用程序和外部命令之间联系桥梁,应用程序中需要读取文件,然后再删除该临时文件,比较繁琐,优点是实现简单,容易理解。...方法就是fork一个子进程,并创建一个匿名管道,进程中执行shell命令,并将其标准输出dup 到匿名管道输入端,父进程从管道中读取,即可获得shell命令输出,代码如下:   /**   *...增强system函数,能够返回system调用输出   *   * @param[in] cmdstring 调用外部程序脚本命令串   * @param[out] buf 返回外部命令结果缓冲区...采用这种方法,既避免了创建临时文件,又不受输出字符数限制,推荐使用。   popen使用FIFO管道执行外部程序。

    5.6K20

    使用python执行shell脚本 并动态传参 及subprocess使用详解

    要执行程序通常是args序列字符串中第一项,但可以使用可执行参数进行显式设置。...UNIX上,与shell=False(默认):在这种情况下POPEN使用os.execvp()来执行子程序。 args通常应该是一个序列。...如果写shell=True,默认为shell=False,需要在args第一个参数指定执行器路径 ?...返回一个元组(stdout,stderr) 但是读取数据缓存在内存中,所以如果数据量很大或者无限,就不要使用这种方法 Popen.pid 返回子进程pid Popen.returncode 读取进程状态码...Popen.kill() 杀死进程 以上这篇使用python执行shell脚本 并动态传参 及subprocess使用详解就是小编分享给大家全部内容了,希望能给大家一个参考。

    5.5K30
    领券