城乡建设部网站第35号令,如何建设部网站查职称,wordpress购物车系统,网站建设一条龙怎么样【精选】操作系统实验二 观察Linux进程状态_linux什 么时候出现运行状态、暂停状态、可中断阻塞状 态、不可中断阻塞状态、僵_Ace2NoU的博客-CSDN博客
Linux C/C 监控进程变化_mob649e81583204的技术博客_51CTO博客 #include sys/types.h
#include sys/wait.h…【精选】操作系统实验二 观察Linux进程状态_linux什 么时候出现运行状态、暂停状态、可中断阻塞状 态、不可中断阻塞状态、僵_Ace2NoU的博客-CSDN博客
Linux C/C 监控进程变化_mob649e81583204的技术博客_51CTO博客 #include sys/types.h
#include sys/wait.hpid_t pid;
int status;pid_t child_pid fork();
if (child_pid 0) {// 创建子进程失败错误处理
} else if (child_pid 0) {// 子进程代码// 子进程结束后使用 exit() 函数退出exit(0);
} else {// 父进程代码while ((pid waitpid(child_pid, status, WNOHANG | WUNTRACED | WCONTINUED)) 0) {if (WIFEXITED(status)) {// 子进程正常退出可以进行相应处理} else if (WIFSIGNALED(status)) {// 子进程被信号终止可以进行相应处理} else if (WIFSTOPPED(status)) {// 子进程被暂停可以进行相应处理} else if (WIFCONTINUED(status)) {// 子进程被恢复继续执行可以进行相应处理}
}if (pid 0) {// 监控子进程出错错误处理
}} 分析为什么出现以上现象并对其进行总结什么时候出现运行状态、暂停状态、可中断阻塞状态、不可中断阻塞状态、僵尸状态
1、在查看运行状态的实验中该进程在051时获得CPU正在运行处于R状态。在查看暂停状态时进程一开始处于R状态由于向其发送了SIGSTOP信号所以转为T状态后来又向其发送了SIGSCON信号进程又转为R状态。在查看可中断阻塞状态时进程一开始处于S状态由于使用了kill命令进程被中断。在查看不可中断阻塞状态时进程一开始处于D状态使用了kill命令但进程并没有被中断。在查看僵尸进程时子进程迅速结束进入Z状态而父进程陷入阻塞进入S状态。
2、出现各种状态的情况
1可运行状态R当创建一个新进程系统调用创建原语该进程为就绪状态或者进程执行唤醒原语把处于阻塞状态进程的状态改为就绪状态或者进程获得CPU正在运行处于执行状态。
2可中断阻塞状态S进程调用阻塞原语把状态改为阻塞状态在资源有效时能被信号或中断唤醒进入到运行态队列。 可以kill
3不可中断阻塞状态D进程调用阻塞原语把状态改为阻塞状态不可被其他进程唤醒只有被使用wake_up()函数明确唤醒时才能转换到可运行的就绪状态。 不可以kill
4暂停状态T当进程收到信号SIGSTOP、SIGTSTP、SIGTTIN或SIGTTOU时就会进入暂停状态。可向其发送SIGCONT信号让进程转换到可运行状态。
5僵死状态Z表示进程停止但尚未消亡的一种状态。此时进程已经结束运行并释放掉大部分资源但父进程尚未收回其PCB。 python代码
import psutildef check_process_status(pid):try:process psutil.Process(pid)status process.status()if status psutil.STATUS_RUNNING:return Runningelif status psutil.STATUS_SLEEPING:return Sleepingelif status psutil.STATUS_ZOMBIE:return Zombieelif status psutil.STATUS_DEAD:return Deadelif status psutil.STATUS_IDLE:return Idleelse:return Unknownexcept psutil.NoSuchProcess:return Process not found# 使用进程的PID来检查其状态
pid 1234 # 替换为你要检查的进程的PID
status check_process_status(pid)
print(fProcess status: {status})