首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Windows内核之进程的终止和子进程

    它做的事情: 全部打开的句柄被关闭 全部的线程会被终止 进程对象的状态变为终止的,满足全部等待进程结束的线程 进程中全部线程对象的状态变为终止,满足全部等待线程结束的线程 ...进程的终止状态由STILL_ACTIVE变为了进程的返回代码 这个函数是异步的,它告诉操作系统,你要终止某个进程,可是当函数返回的时候,你无法保证进程是否已经被杀死,假设想要确切知道进程是否被杀死...2 进程终止时的情况 进程中全部剩余线程将被终止 进程中指定的用户对象,GDI对象被释放,内核对象被关闭 内核对象的状态编程收到通知的状态 进程的退出代码由STILL_ACTIVE...3 子进程 程序中要实现一段功能一共同拥有3种方法: 调用函数 开辟新线程 开辟新进程 3.1 调用函数 调用函数时很常见的,可是它的缺点是由于在同一个线程中...3.3 开辟子进程 这样有点是既能够保护数据,能够同步运行,也能够等待新进程运行完成再去运行其它进程的代码。缺点是开辟新进程,会造成地址空间的浪费。

    2.5K20

    Linux下获取进程的PID

    Linux系统中常常需要获取进程的pid进行一些操作,而Linux 的交互式 Shell 与 Shell 脚本存在一定的差异,主要是由于后者存在一个独立的运行进程,因此在获取进程 pid 上二者也有所区别...交互式 Shell 获取 pid在ps命令的基础上,如果我们知道进程的name,那么可以利用grep来获取其pid(需要通过-v来过滤掉grep本身),并通过awk显示出来。...,可以直接使用pidof:`pidof name`Bash Shell 脚本获取进程 pid在使用 Shell 脚本获取进程 pid 时,如果直接使用上述命令,可能会出现多个 pid 结果,例如:#!...$pid执行 process-monitor.sh 会出现多个结果:$> sh process-monitor.sh3036 3098 3099进一步排查可以发现,多出来的几个进程实际上是子 Shell...条件来做进一步的判断了如果我们不确定找到的进程是否正确,可以通过判断pid所在的进程是否运行:if ps -p $PID > /dev/nullthen echo "$PID is running"

    3.1K10

    过滤某PID的svchost进程

    原始问题:tasklist /svc结果如下(节选),pid 1560对应的svchost.exe是紧挨的2行,svchost.exe和1560只显示在第一行,单纯用tasklist /svc | findstr...1560过滤1560会导致过滤出的结果不全(下一行不会显示)映像名称 PID 服务========================= ======== ==...、AI之美)让deepseek帮忙优化下代码做了如下改造,是因为最多的时候同一个svchost对应的服务有十几个,可能展示五六行,但其实有特点,如果没显示完,下一行的最后一个字符是英文逗号,可否打印下一行的时候看看最后一个字符是不是逗号...,是的话再打印一行,麻烦继续修改代码# 获取 tasklist /svc 的输出$tasklist = tasklist /svc# 遍历每一行,找到 PID 为 960 的行for ($i = 0;...$tasklist = tasklist /svc# 遍历每一行,找到 PID 为 960 的行for ($i = 0; $i -lt $tasklist.Count; $i++) { # 检查当前行是否包含

    55010

    关于windows上的lsass.exe进程

    关于windows上的lsass.exe进程 作者:eygle 出处:http://blog.eygle.com 日期:December 26, 2004 « 安装cronolog,格式化Apache的日志文件...lsass - lsass.exe - 进程信息 进程文件: lsass or lsass.exe 进程名称: 本地安全权限服务 描述: 本地安全权限服务,控制Windows安全机制。...常见错误: N/A 是否为系统进程: 是 该进程为系统进程,不能在任务管理器里终止,记得以前在命令行kill该进程,可能会导致系统蓝屏(不确认了)。...Link 意思是说: 这是一个本地的安全授权服务,并且它会为使用winlogon服务的授权用户生成一个进程。这个进程是通过使用授权的包,例如默认的msgina.dll来执行的。...通常我认为,只要对windows的进程有适当的认识,不依赖防病毒工具,我们仍然可以敏感的认识到异常进程或异常Dll,从而发现可疑进程,找出问题所在。

    2.6K50

    如何在父进程中读取子(外部)进程的标准输出和标准错误输出结果

    它是我们启动子进程时,控制子进程启动方式的参数。...我们之后将hWrite交给我们创建的子进程,让它去将信息写入管道。而我们父进程,则使用hRead去读取子进程写入管道的内容。...si.cb = sizeof(STARTUPINFO); GetStartupInfo(&si); si.hStdError = hWrite; // 把创建进程的标准错误输出重定向到管道输入...设置标准输出和标准错误输出句柄 si.hStdError = hWrite; // 把创建进程的标准错误输出重定向到管道输入 si.hStdOutput = hWrite...我想应该有人借用过网上相似的代码,但是却发现一个问题,就是读取出来的信息是不全的。这个问题的关键就在读取的方法上,其实没什么玄妙,只要控制好读取起始位置就行了。

    7K10

    Linux系统 —— 进程系列 - 进程的概念,PCB与PID和fork

    一个程序运行起来叫做进程,未运行起来就是一个二进制文件,存储在磁盘当中,程序运行之前要加载到内存,在操作上就是(....pid, 0返回给子进程。...pid, 给子进程返回0呢?...在我们的操作系统里,我们的父进程比上子进程是1:N的,简单来说就是任何一个父进程可以有一个或者多个子进程 所以我们在创建子进程时,一定要把子进程的pid返回给父进程,因为父进程需要通过返回的不同的...pid来区分不同的子进程,而子进程不需要获得父进程的pid,因为子进程已经能够获得getppid了,所以子进程只需要表明自己成功建立就可以了 4.2 fork函数为什么会返回两次?

    84110

    关于进程的实验(子进程和父进程相关的)

    让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。...的顺序输出的,可见这个操作系统对于这个进程的调度顺序并不是固定的,所以出现了这样的两次执行,但是结果不一样的情况; 2.第二个问题 修改已经编好的程序,将每个进程输出一个字符改为每个进程输出一句话,再观察程序执行时屏幕上出现的现象...源程序: 执行情况:while ((pid1 = fork()) == -1); 使用fork函数创建一个子进程。...if (pid2 == 0) 表示进入第二个子进程的代码块。...与第一个子进程类似,通过for循环执行 5 次,每次循环锁定标准输出,输出字符串"pid2 here : " 加上当前循环变量i的值,然后解锁标准输出。

    70910

    云上Windows Server进程级问题排查方式

    在使用微软系的一些解决方案中,或者日常使用Windows Server过程,其实基本功非常重要,比如对于进程级的检查,当系统因为某些进程夯住导致系统异常无法动弹时,重启后系统进程现场丢失,那么要如何定位究竟是什么进程导致了系统异常呢...在Linux里,Atop无疑是最好的选择: 亦或是用dmp(panic产生的文件)来判断当时Linux运行状态: 那么在Windows Server里如何来实现进程级别的追溯?...,ITIL落地性是最高的,可惜非常厚重,以至于没有人有有信心跟耐心去深入研究这个架构,所以我们现在可以看到很多众多从业者造的“轮子”,在SCOM上实现的进程级监控是这样的: 配置监控阈值: 进程级告警...p=379 方式二,PowerShell: PowerShell是一个比较灵活且在Windows Server平台上兼容性较高的方式,不过要求一定的读写脚本能力,我这里抛砖引玉下: 进程CPU占用情况...,不过成本比较高,其效果如下: 在Windows Server 中panic level不像linux那么细致可以根据阈值调整宕机的灵敏度,所以有时候需要通过必要设置来手动触发crash,具体涉及的注册表如下

    3K60

    等待子进程的那些事儿

    这是通过指定 SA_SIGINFO 标志位,并提供带 siginfo_t 参数的信号处理器来实现的 (info->si_pid 就是结束进程的进程号); 使用 sigaction 可以获取除子进程结束以外的状态变更通知...在上面的例子中,子进程一启动就退出了,快到甚至父进程还没有来得及执行 pid_add 就先执行了 pid_remove,这很容易导致潜在的问题。...waitpid 优先等待到了,所以信号处理器中的 wait 返回的 ECHILD 错误。...因为 waitpid 是指定进程等待的,所以即使还有其它子进程存在,这个也会返回错误,不会卡死在那里。...在处理器中也应使用 waitpid 等待子进程,如返回 ECHILD 错误,证明该子进程是前台进程,已经被同步 wait 掉了,不需要任何处理;否则作为后台进程处理。

    2.9K30
    领券