僵死状态进程如何处理

僵死状态进程如何处理

Q: 子进程执行完或kill后,处于僵死状态(zombie),如何将其终结?

A: 如果子进程退出后,通过ps命令仍能看到其存在,并且它的状态变成Z,则此子进程处于僵死状态,那如何将其正常终止呢?
在 SylixOS 中可以通过调用 wait 或者 waitpid,这样父进程可以获取子进程的退出状态,子进程也能正常终止。
      即在程序中增加如下代码:
  1.  child_pid = wait (&iStatLoc)
        或者
  1. waitpid(child_pid, &iStatLoc, 0);

    • Related Articles

    • SylixOS Kill 命令使用和 linux 的区别

      Q:SylixOS Kill 命令使用和 linux 的区别 相同点: 就是发送信号给指定的进程 不同点 linux kill 只能 kill 一个进程, 一般使用格式是 kill - 数字 进程号 eg: kill -9 3567 sylixos kill 能 kill 一个进程或者线程,一般使用的格式是 kill tid/pid, 或者kill -n signo pid/tid eg: kill 3 或者 kill -n 9 3 kill tid/pid 默认发送的信号是 SIGKILL ...
    • SylixOS kill 命令是不安全的操作

      现象: 在 SylixOS 的 shell 终端执行 kill 命令,会出现如下现象 [sh]Warning: Program is killed (SIGKILL) by shell. Restart SylixOS is recommended! 上述的意思是使用shell下面的kill命令去杀死另外一个进程是不安全的,建议重启处理。 kill命令会导致如下问题: 1、如果 kill 的时候,应用进程刚好持有驱动函数锁,会导致驱动函数的锁被删除掉,导致驱动函数信号量被意外释放。 ...
    • 缺页中断后,系统被重启(任务被kill)

      Q:系统发生缺页中断后打印了一些调试,系统就重启或者任务被 kill 了? 由于 SylixOS 操作系统为了保持硬实时操作系统的特性,所以内核与应用程序没有严格的隔离,缺页中断如果发生在内核被锁定或者中断中,则操作系统不能正确处理,这里需要应用程序开发者与驱动开发人员注意。 更多扩展知识见: 参考文章:处理器包含多级中断系统,BSP部分该如何设计? 参考文章:系统遇到哪些异常时,会导致系统重启
    • 打印指定线程的调用栈

      Q:线程运行不正常,发现阻塞了,需要打印其调用连。 SylixOS 支持通过命令可以获取指定线程的调用链。 通过 shell 交互输入:kill -n 47 线程 id
    • 缺页中断后系统被任务 Kill ?

      Q:缺页中断后系统被任务 Kill ? SylixOS 系统发生缺页中断后,打印了一些调试后系统就重启或者任务被杀死了 由于 SylixOS 操作系统为了保持硬实时操作系统的特性,所以内核与应用程序没有严格的隔离。 缺页中断如果发生在内核被锁定或者中断中,则操作系统不能正确处理,这里需要应用程序员与驱动开发人员注意。