我会尽量保持简单。我目前正在为LINUX复制一个shell。我使用链表结构“job_list”来存储所有后台进程。如果后台进程终止,那么它将从列表中删除。如果后台进程挂起,则其列表中的状态将从BACKGROUND更改为STOPPED。如果进程被重新唤醒(通过SIGCONT信号),那么想法是列表中的进程状态应该改回到BACKGROUND。SIGCONT和LINUX中的waitpid()问题

我的问题如下:当我向进程发送一个SIGSTOP信号时,执行section // 1,并且它的状态改变已成功注册到列表中。但是,当我使用SIGCONT信号唤醒同一进程时,WIFCONTINUED(status)将返回false,但WIFEXITED(status)将始终返回true。因此,部分// 3将被执行,并且该进程将从列表中删除。

什么可能是错的?提前致谢。

void sigchld_handler(){

block_SIGCHLD();

job *item;

int l_size = list_size(job_list);

int i, new_pid, pid_wait, status, info;

enum status status_res;

for (i = 1; i <= l_size; i++){

item = get_item_bypos(job_list, i);

new_pid = item->pgid;

pid_wait = waitpid(new_pid, &status, WUNTRACED | WNOHANG);

if (WIFSTOPPED(status)){

//1

printf("****SUSPENDED\n");

item->state = STOPPED;

}else if (WIFCONTINUED(status)){

//2

printf("****CONTINUED\n");

item->state = BACKGROUND;

}else if (WIFEXITED(status)){

//3

printf("****EXITED\n");

l_size--;

i--;

delete_job(job_list, item);

}

}

print_job_list(job_list);

unblock_SIGCHLD();

}

2015-05-18

Forset1

+0

您是否在'waitpid'调用中缺少'WCONTINUED'? –

+0

这样一个简单的解决方案......这正是问题所在。我写了“waitpid(new_pid,&status,WUNTRACED | WNOHANG | WCONTINUED);”它的工作原理。非常感谢! –

linux waitpid 用法,SIGCONT和LINUX中的waitpid()问题相关推荐

  1. linux C语言多线程库pthread中条件变量的正确用法逐步详解

    linux C语言多线程库pthread中条件变量的正确用法: 了解pthread常用多线程API和pthread互斥锁,但是对条件变量完全不知道或者不完全了解的人群. 关于条件变量的典型应用,可以参 ...

  2. linux中的su-命令的功能,linux su命令参数及用法详解(linux切换用户命令)

    linux su命令参数及用法详解(linux切换用户命令) 发布时间:2012-07-21 12:12:39   作者:佚名   我要评论 su的作用是变更为其它使用者的身份,超级用户除外,需要键入 ...

  3. linux scp涉及到权限,linux系统中scp命令的用法(Permission denied排错二例)

    linux系统中scp命令的用法 注意: 在使用过程中如果出现   -bash: scp: command not found 请执行yum install openssh-clients scp是 ...

  4. linux中df命令用法,详细分析Linux df命令的使用方法

    Linux df命令是学习Linux管理的一个应用的一个简单的命令,但是简单的命令有时会给我们以巨大的帮助,这里详细介绍一下Linux df命令的使用. df命令详细用法 a:显示全部的档案系统和各分 ...

  5. linux中whoami命令的作用是,linux whoami命令参数及用法详解(linux查看登陆用户名)

    linux whoami命令参数及用法详解(linux查看登陆用户名) 2019年05月31日 | 萬仟网科技 | 我要评论 whoami 命令显示登录名.与使用命令 who 并指定 am i 不同, ...

  6. linux awk语法格式,Awk是什么?一文带运维小白快速掌握Linux Awk用法

    原标题:Awk是什么?一文带运维小白快速掌握Linux Awk用法 作者:a8 Awk.sed与grep,俗称Linux下的三剑客,它们之间有很多相似点,但是同样也各有各的特色,相似的地方是它们都可以 ...

  7. linux的网络命令整理 更新中

    linux的网络命令整理 更新中 1.安装包: net-tools 主要命令: netstat , ifconfig , route , iptunnel iproute 主要命令: ss , ip ...

  8. linux useradd(adduser)命令参数及用法详解(linux创建新用户命令)

    linux useradd(adduser)命令参数及用法详解(linux创建新用户命令) useradd可用来建立用户帐号.帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号 ...

  9. linux命令行变大,Linux命令行下'!'的8大神奇的用法!

    哈,终于收假回来了,各位亲是不是等不及了?这次的文章原创于别的大牛,这里在自己的环境来演示一下这八个神奇的用法,在Linux 系统中,'!' 符号或者操作符通常被用做逻辑否定的操作符,同时也通过一些调 ...

最新文章

  1. SNV分析软件/工具
  2. C# 中的委托(Delegate)
  3. git放弃本地修改,强制覆盖本地文件
  4. xss绕过尖括号和双括号_xss挑战平台练习
  5. java coherence_Coherence配置默认覆盖路径
  6. 国外著名java技术资料网站
  7. go build 无文件_Go学习_30_Golang代码性能分析工具
  8. Nginx 0.7.x + PHP 5.2.6(FastCGI)搭建高性能web服务器
  9. Oracle创建数据库出错,oracle 10g dbca创建数据库出错 急急急
  10. (转)资产管理和财富管理的区别
  11. URI和URL差别以及相对路径和绝对路径的差别
  12. sqlplus 命令登录 Oracle
  13. 知识图谱+Recorder︱中文知识图谱API与工具、科研机构与算法框架
  14. citrix终端linux,Citrix XenDesktop发布Centos 7.2桌面(六)--安装Linux VDA
  15. ubuntu 20.04.1安装Google输入法
  16. 知识图谱多跳问答推理研究进展、挑战与展望
  17. 键盘忍者:无需鼠标即可启动任何应用程序
  18. python爬虫爬取链家二手房信息
  19. java毕业生设计超市货品进销存系统前台计算机源码+系统+mysql+调试部署+lw
  20. 企业能源管控平台在钢铁行业能源管理中的应用

热门文章

  1. 今天踏上博客之旅,好饭不怕晚
  2. 接口测试平台代码实现番外:主页改版-5
  3. 学校计算机室 qq管理,学校机房电脑屏蔽qq怎么办?
  4. 多元线性回归最小二乘法及其应用
  5. 2021年山东省安全员C证考试总结及山东省安全员C证试题及解析
  6. python pychart 图片_“Matplotlib与Python数据可视化的pyecharts”朝阳图,之,Pyecharts,旭日...
  7. python读word中表格
  8. 综述:什么是光流及其在深度学习中的应用
  9. (附源码)计算机毕业设计SSM智慧消防维保系统后端设计与实现
  10. 监视和截获指定进程网络数据传输WSockExpert0.6 工具介绍和使用实例