unix-孤儿进程的问题,请教高手

问题描述

孤儿进程的问题,请教高手

#include stdio.h>
#include stdlib.h>
#include unistd.h>
#include signal.h>
#include errno.h>
#define errexit(msg) do{ perror(msg); exit(EXIT_FAILURE); } while(0)
static void sig_hup(int signo)
{
printf("SIGHUP received, pid = %dn", getpid());
}
static void sig_cont(int signo)
{
printf("SIGCONT received, pid = %dn", getpid());
}
static void sig_ttin(int signo)
{
printf("SIGTTIN received, pid = %dn", getpid());
}
static void pr_ids(char name)
{
printf("%s: pid = %d, ppid = %d, pgrp = %d, tpgrp = %dn",
name, getpid(), getppid(), getpgrp(), tcgetpgrp(STDIN_FILENO));
}
int main(int argc, char *argv[])
{
char c;
pid_t pid;
setbuf(stdout, NULL);
pr_ids("parent");
if ((pid = fork()) 0) {
errexit("fork error");
} else if (pid > 0) { /
parent /
sleep(5);
printf("parent exitn");
exit(0);
} else { /
child */
pr_ids("child...1");
signal(SIGCONT, sig_cont);
signal(SIGHUP, sig_hup);
signal(SIGTTIN, sig_ttin);
kill(getpid(), SIGTSTP);
//sleep(10);
pr_ids("child...2");
if (read(STDIN_FILENO, &c, 1) != 1) {
printf("read error from controlling TTY, errno = %dn", errno);
}
printf("child exitn");
}
exit(0);
}
将改程序编译成: m
程序执行结果:

[liumin@localhost orphan]$ ./m
parent: pid = 15028, ppid = 8611, pgrp = 15028, tpgrp = 15028
child...1: pid = 15029, ppid = 15028, pgrp = 15028, tpgrp = 15028
parent exit
SIGCONT received, pid = 15029
[liumin@localhost orphan]$ SIGHUP received, pid = 15029
child...2: pid = 15029, ppid = 1, pgrp = 15028, tpgrp = 8611
child exit

但是 ./m > result.txt
parent: pid = 15028, ppid = 8611, pgrp = 15028, tpgrp = 15028
child...1: pid = 15029, ppid = 15028, pgrp = 15028, tpgrp = 15028
parent exit
SIGCONT received, pid = 15029
[liumin@localhost orphan]$ SIGHUP received, pid = 15029
read error from controlling TTY, errno = 5
child...2: pid = 15029, ppid = 1, pgrp = 15028, tpgrp = 8611

read error from controlling TTY, errno = 5 不导入文件就不出现 问什么?
请各位指教。我用ubuntu10.04

时间: 2024-09-04 08:49:38

unix-孤儿进程的问题,请教高手的相关文章

求救-网站服务器被CC攻击,导致cpu高达100%。请教高手解决方法!

问题描述 网站服务器被CC攻击,导致cpu高达100%.请教高手解决方法! 网站服务器被CC攻击,w3pw进程超过25%导致cpu高达100%.请教高手解决方法!

孤儿进程与僵尸进程[总结]

1.前言 之前在看<unix环境高级编程>第八章进程时候,提到孤儿进程和僵尸进程,一直对这两个概念比较模糊.今天被人问到什么是孤儿进程和僵尸进程,会带来什么问题,怎么解决,我只停留在概念上面,没有深入,倍感惭愧.晚上回来google了一下,再次参考APUE,认真总结一下,加深理解. 2.基本概念 我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程.子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程 到底什么时候结束. 当一个 进程完成

僵尸进程zombie与孤儿进程orphan

问题提出 以前在学习<unix环境高级编程>进程时候,提到孤儿进程和僵尸进程,但是一直对这两个概念比较模糊.于是今天做了一些测试程序,并把这些记录下来. 僵尸进程/僵死进程 In UNIX System terminology, a process that has terminated,but whose parent has not yet waited for it, is called a zombie. 在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / w

请教高手关于myeclipse中derby数据库的问题

问题描述 请教高手我用myeclipse6.0新建了一个Java工程TestDerby又用myeclipsedatabaseexplorer在工程TestDerby内建了一个derby数据库DerbyTest并建了一张表但是用工程中的Java代码访问DerbyTest数据库却产生了异常把myeclipse重启一下然后运行,能够运行成功但是用myeclipsedatabaseexplorer连接上Derby数据库,在断开连接后,再运行Java代码,又产生上述异常了不知为什么异常内容如下:Excep

请教高手一个问题

问题描述 请教高手一个问题,我这里有两台服务器DELL2850cpu3.2内存3G一台用作web服务器,一台用作数据库服务器.oracle中有十万条数据,在web服务器中启动websphere5.1,cpu占用率百分之九十多,系统页面刷新不出来.请问是硬件问题,还是websphere没有设置好.谢谢 解决方案 解决方案二:需要做Profiling才能够找出瓶颈.CPU占用率高的话,需要看WAS进程占用了多少?如果单个WAS进程使用超过80%的话,那么你肯定需要加CPU了解决方案三:启动websp

诚心请教高手 :使用JDBC更新ORACLE数据

问题描述 程序需求:程序每5分钟,要更新一次数据库里表的数据,每一次要执行38条SQL语句,每一条SQL语句要更新大约16000多个字段,在运行当中出现了这样一个问题,大约运行10个多小时以后,程序就卡死了,程序什么异常都没抛出,控制台也没有异常抛出,诚心请教高手,在这方面有没有更好的解决方案.try{Longstart=System.currentTimeMillis();conn.setAutoCommit(false);stmt=conn.createStatement();//listS

ssh整合-S2SH集成中使用AOP后查询结果为NULL?。。请教高手解答一下

问题描述 S2SH集成中使用AOP后查询结果为NULL?..请教高手解答一下 做SSH集成,用得是spring的声明式事务和hibernate做的集成. 以下是spring配置文件中关于AOP的配置: <!-- 配置aop拦截声明类 --> <bean id = "myAop" class="com.acc.aop.MyAop"></bean> <aop:config> <aop:pointcut express

oracle 数据库用的plsql工具,执行的sql按F5查看cpu耗费,请教高手帮忙解答!

问题描述 oracle 数据库用的plsql工具,执行的sql按F5查看cpu耗费,请教高手帮忙解答! 主要区别在于走索引,走了索引,耗费降低,但是执行速度变慢了,但是不走索引,执行速度变快了,但是耗费上升!请问原因是什么?是不是意味着,耗费越高,执行速度越快吗?还是两者没有必然联系?我们在设计sql时,是要先考虑哪方面? 解决方案 楼主 你知不知道索引的意思? 索引类似书的目录结构,按照索引查找执行速度怎么变慢了呢? 至于耗费和速度的关系就如同你跑步一样的 你费力气点跑,就跑的快一点 你省力气

请教高手如何优化下面oracle语句,19W条数据花了几个小时

问题描述 请教高手如何优化下面oracle语句,19W条数据花了几个小时 3C update agz set fa_id=(select B from B123 where a=agz.old_fa_id);commit;update agz set person_id=(select ry.id from dm_gy_ry ry where ry.sfzjhm=agz.ry_sfz and ry.yxbz='Y' and rownum=1);commit;update agz set pers