BBS.ChinaUnix.net
首页
|
新闻
|
Linux
|
FreeBSD
|
AIX
|
Windows
|
博客
|
论坛
|
存储
|
网络
|
人才
|
Wiki
|
资料
|
读书
|
手册
|
下载
|
空间
|
搜索
会员:
密码:
免费注册
|
忘记密码
|
会员登录
|
搜索
|
帮助
奥运快报:
奥运热点:
[函数]
守护进程退出状态问题!!!请帮忙分析下(有代码)
1
2
››
首页
»
论坛
»
C/C++
»
论坛跳转 ...
> 数据仓库与数据挖掘
> 门户网站运维
> Functional编程
> Linux论坛
> BSD
> BSD文档中心
> Solaris
> Solaris文档中心
> 互操作专区
> AIX
> AIX文档中心
> AS400
> HP-UX
> HP文档中心
> SCO UNIX
> SCO文档中心
> Tru64 UNIX
> IRIX
> Mac OS X
> C/C++
> Shell
> Java
> Java文档中心
> Php
> php文档中心
> Perl
> Python
> Python文档中心
> Web开发
> 软件工程
> 中间件技术
> GUI编程
> 软件配置管理
> VOIP开发技术
> CPU与编译器
> Ruby
> OpenAPI
> 安全技术
> 网络技术
> 网络技术文档中心
> 存储备份之家
> 存储文档中心
> 存储业界
> 服务器及硬件技术
> MySQL
> MySQL文档中心
> Sybase
> Oracle
> PostgreSQL
> DB2
> Informix
> Web服务器
> Mail服务器
> FTP服务器
> DNS服务器
> Proxy服务器
> LDAP
> VPN
> Lotus
> Samba
> 金融行业
> 电信行业
> 互联网行业
> 制造行业
> 医卫行业
> 教育行业
> 电子政务
> 信息安全
> 交通行业
> IT业界新闻与评论
> IT职业生涯
> IT培训与认证
> IT二手大厅
> IT图书与评论
> 清茶斋
> 投资理财
> 运动地带
> 北京2008奥运专版
> 快乐数码摄影
> 《奥运之夏》摄影赛专区
> 影音文字
> English Forum
> 游戏玩家
> 旅游天下
> IT爱车族
> 文学小说
> CU活动专区
> 站务交流
> 博客站务交流区
> 下载频道交流区
> 空间圈子交流区
最近访问的论坛 ...
时代冠军主机588元/两年
|
OpenAPI版开通
|
参加2008RSDC大会限量报名,先到先得
|
送Windows新书+500分+2G U盘
[
打印
] [
订阅
] [
收藏
] [
本帖文本页
] [
推荐此主题给朋友,立即获积分
]
[已解决] 本主题悬赏 可用积分 10
kingsu
精灵
UID:647908
注册:2007-11-29
最后登录: 2008-08-07
帖子:
229
精华:0
可用积分:268 (白手起家)
信誉积分:45
专家积分:35 (本版:30)
空间积分:0
推广积分:0
状态:
...离线...
[
个人空间
] [
短信
] [
博客
]
[
推广获积分
]
1楼
发表于 2008-6-20 16:26
守护进程的创建过程如下:
void server(void)
{
int pid;
int i;
if ((pid = fork()) > 0)
{
exit(1); // parent terminates
}
else if (pid == -1)
{
exit(2); // fork() failed
}
// first child process
setsid();
if ((pid = fork()) > 0)
{
exit(3); // first child terminates
}
else if(pid == -1)
{
exit(4); // fork() failed
}
// second child
for (i=0; i<NOFILE; ++i) // close all files
{
close(i);
}
chdir("/"); // change directory to root
umask(0); // set proper file mask
}
int main()
{
if (function1() != 0){//其它的处理函数
return 1;
}
server();
if (function() != 0){ //其它的处理函数
return 1;
}
return 0;
}
说远一点吧,如果我把这个代码编译成可执行程序,然后从shell中执行它并且取得它的返回值,我如何才能得到server函数中的返回值呢?
其实对进程和退出状态有点晕,哪位大虾给讲讲整个代码执行详细流程啊。。。
这个代码是不是有多个返回值啊,因为父进程和子进程和“孙子进程“(好区别这样叫)都有退出啊,我如何得到最后的孙子进程的退出状态值呢?
您对本贴的看法:
鲜花[0]
臭蛋[0]
空间积分可以换礼品了!
|
有奖跟帖:服务器节能,奖50-100元图书
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
|
送2G U盘
rainysky
侠客
UID:188807
注册:2004-10-10
最后登录: 2008-09-03
帖子:
39
精华:0
可用积分:60 (白手起家)
信誉积分:100
专家积分:10 (本版:10)
空间积分:0
推广积分:0
来自:苏州
状态:
...离线...
[
个人空间
] [
短信
] [
博客
]
[
推广获积分
]
最佳答案
2楼
发表于 2008-6-20 16:26
流程就是你运行你的程序:
SHELL创建子进程(你程序里面所谓的父进程),然后父进程退出,SHELL得到返回值1或者2
第一个子进程继续运行,这里由于父进程退出,第一个子进程的父进程变为INIT进程,然后第一个子进程又FORK
FORK后第一个子进程退出,由于INIT会IGN子进程的退出状态,所以返回值3或者4丢弃了。
然后你的第二个子进程继续运行,父进程又变成INIT,最后退出,INIT忽略返回值。
如果DAEMON进程有问题,一般是记SYSLOG的吧。
您对本贴的看法:
鲜花[0]
臭蛋[0]
__________________________________
专业潜水
空间积分可以换礼品了!
|
有奖跟帖:服务器节能,奖50-100元图书
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
|
送2G U盘
Godbach
(To be 千里马!)
精灵使
UID:534931
注册:2007-3-9
最后登录: 2008-09-06
帖子:
3565
精华:
4
可用积分:6253 (富足长乐)
信誉积分:105
专家积分:69 (本版:1)
空间积分:2
推广积分:0
状态:
...离线...
[
个人空间
] [
短信
] [
博客
]
[
推广获积分
]
3楼
发表于 2008-6-20 16:46
LZ,生成守护进程有系统调用,daemon().
您对本贴的看法:
鲜花[0]
臭蛋[0]
__________________________________
明犯我强汉天威者,穷搜天下,万里追杀,覆其巢,断其苗裔,戮其身,追其魂,屠其魄,虽远必诛!
----------------------------------
一尺之槌,日取其半,万世不竭!
空间积分可以换礼品了!
|
有奖跟帖:服务器节能,奖50-100元图书
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
|
送2G U盘
flw
广告杀手-老法王
侠客
UID:14893
注册:2002-8-12
最后登录: 2008-09-07
帖子:
20133
精华:
13
可用积分:15503 (大富大贵)
信誉积分:925
专家积分:1219 (本版:105)
空间积分:0
推广积分:18
状态:
...在线...
[
个人空间
] [
短信
] [
博客
]
[
推广获积分
]
4楼
发表于 2008-6-20 17:08
QUOTE:
原帖由
Godbach
于 2008-6-20 16:46 发表
LZ,生成守护进程有系统调用,daemon().
daemon 会禁止 core dump,用起来略微有些不便。
您对本贴的看法:
鲜花[0]
臭蛋[0]
__________________________________
data Maybe a = Nothing
| Just a
---
如何知道一个变量是什么类型?
如何知道分配的内存有多大?
如何知道 select 的 fd_set 里哪个句柄是无效的?
如何知道指针是不是有效的?
如何通过文件句柄得到文件名?
……
如何知道我昨晚把袜子脱哪儿了?
空间积分可以换礼品了!
|
有奖跟帖:服务器节能,奖50-100元图书
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
|
送2G U盘
Godbach
(To be 千里马!)
精灵使
UID:534931
注册:2007-3-9
最后登录: 2008-09-06
帖子:
3565
精华:
4
可用积分:6253 (富足长乐)
信誉积分:105
专家积分:69 (本版:1)
空间积分:2
推广积分:0
状态:
...离线...
[
个人空间
] [
短信
] [
博客
]
[
推广获积分
]
5楼
发表于 2008-6-20 17:37
QUOTE:
原帖由
flw
于 2008-6-20 17:08 发表
daemon 会禁止 core dump,用起来略微有些不便。
那就是如果想了解程序出问题时的情况是,最好还是自己写一个daemon程序吗?
您对本贴的看法:
鲜花[0]
臭蛋[0]
__________________________________
明犯我强汉天威者,穷搜天下,万里追杀,覆其巢,断其苗裔,戮其身,追其魂,屠其魄,虽远必诛!
----------------------------------
一尺之槌,日取其半,万世不竭!
空间积分可以换礼品了!
|
有奖跟帖:服务器节能,奖50-100元图书
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
|
送2G U盘
kingsu
精灵
UID:647908
注册:2007-11-29
最后登录: 2008-08-07
帖子:
229
精华:0
可用积分:268 (白手起家)
信誉积分:45
专家积分:35 (本版:30)
空间积分:0
推广积分:0
状态:
...离线...
[
个人空间
] [
短信
] [
博客
]
[
推广获积分
]
6楼
发表于 2008-6-20 17:44
同志们,同志们,请不要跑题啊~~
您对本贴的看法:
鲜花[0]
臭蛋[0]
空间积分可以换礼品了!
|
有奖跟帖:服务器节能,奖50-100元图书
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
|
送2G U盘
feiyang21687
精灵
UID:402069
注册:2006-4-11
最后登录: 2008-07-03
帖子:
154
精华:
2
可用积分:160 (白手起家)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0
状态:
...离线...
[
个人空间
] [
短信
] [
博客
]
[
推广获积分
]
7楼
发表于 2008-6-20 18:25
QUOTE:
原帖由
kingsu
于 2008-6-20 16:26 发表
守护进程的创建过程如下:
void server(void)
{
int pid;
int i;
if ((pid = fork()) > 0)
{
exit(1); // parent terminates
}
else if (pid == -1)
{
exit(2); // fork() failed
} ...
没办法获得。父进程被杀死,子进程的父进程变为Init。所以你从Shell中只能得到父进程的退出状态,也就是1
您对本贴的看法:
鲜花[0]
臭蛋[0]
空间积分可以换礼品了!
|
有奖跟帖:服务器节能,奖50-100元图书
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
|
送2G U盘
kingsu
精灵
UID:647908
注册:2007-11-29
最后登录: 2008-08-07
帖子:
229
精华:0
可用积分:268 (白手起家)
信誉积分:45
专家积分:35 (本版:30)
空间积分:0
推广积分:0
状态:
...离线...
[
个人空间
] [
短信
] [
博客
]
[
推广获积分
]
8楼
发表于 2008-6-23 10:45
回复 #6 feiyang21687 的帖子
假如在一个多进程的程序里面,父进程没有被kill掉,各个进程按某个顺序退出,那么shell中能得到这几个进程的退出状态值么?
[
本帖最后由 kingsu 于 2008-6-23 11:03 编辑
]
您对本贴的看法:
鲜花[0]
臭蛋[0]
空间积分可以换礼品了!
|
有奖跟帖:服务器节能,奖50-100元图书
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
|
送2G U盘
cookis
光明使者
UID:389167
注册:2006-3-20
最后登录: 2008-09-05
帖子:
884
精华:
3
可用积分:1529 (家境小康)
信誉积分:100
专家积分:15 (本版:15)
空间积分:0
推广积分:12
来自:BeiJing
状态:
...离线...
[
个人空间
] [
短信
] [
博客
]
[
推广获积分
]
9楼
发表于 2008-6-23 11:11
好像没有孙子进程这一说吧..
您对本贴的看法:
鲜花[0]
臭蛋[0]
__________________________________
| (\_/) This is Bunny. Copy and paste Bunny
| (='.'=) into your signature to help him gain
| (")_(") world domination.
空间积分可以换礼品了!
|
有奖跟帖:服务器节能,奖50-100元图书
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
|
送2G U盘
kingsu
精灵
UID:647908
注册:2007-11-29
最后登录: 2008-08-07
帖子:
229
精华:0
可用积分:268 (白手起家)
信誉积分:45
专家积分:35 (本版:30)
空间积分:0
推广积分:0
状态:
...离线...
[
个人空间
] [
短信
] [
博客
]
[
推广获积分
]
10楼
发表于 2008-6-23 13:44
回复 #8 cookis 的帖子
請注意看,我說了爲了好區別的...就是指的第二次創建的子進程啊
您对本贴的看法:
鲜花[0]
臭蛋[0]
空间积分可以换礼品了!
|
有奖跟帖:服务器节能,奖50-100元图书
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
|
送2G U盘
首页
»
论坛
»
C/C++
»
1
2
››
论坛跳转 ...
> 数据仓库与数据挖掘
> 门户网站运维
> Functional编程
> Linux论坛
> BSD
> BSD文档中心
> Solaris
> Solaris文档中心
> 互操作专区
> AIX
> AIX文档中心
> AS400
> HP-UX
> HP文档中心
> SCO UNIX
> SCO文档中心
> Tru64 UNIX
> IRIX
> Mac OS X
> C/C++
> Shell
> Java
> Java文档中心
> Php
> php文档中心
> Perl
> Python
> Python文档中心
> Web开发
> 软件工程
> 中间件技术
> GUI编程
> 软件配置管理
> VOIP开发技术
> CPU与编译器
> Ruby
> OpenAPI
> 安全技术
> 网络技术
> 网络技术文档中心
> 存储备份之家
> 存储文档中心
> 存储业界
> 服务器及硬件技术
> MySQL
> MySQL文档中心
> Sybase
> Oracle
> PostgreSQL
> DB2
> Informix
> Web服务器
> Mail服务器
> FTP服务器
> DNS服务器
> Proxy服务器
> LDAP
> VPN
> Lotus
> Samba
> 金融行业
> 电信行业
> 互联网行业
> 制造行业
> 医卫行业
> 教育行业
> 电子政务
> 信息安全
> 交通行业
> IT业界新闻与评论
> IT职业生涯
> IT培训与认证
> IT二手大厅
> IT图书与评论
> 清茶斋
> 投资理财
> 运动地带
> 北京2008奥运专版
> 快乐数码摄影
> 《奥运之夏》摄影赛专区
> 影音文字
> English Forum
> 游戏玩家
> 旅游天下
> IT爱车族
> 文学小说
> CU活动专区
> 站务交流
> 博客站务交流区
> 下载频道交流区
> 空间圈子交流区
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
个人空间管理
升级个人空间
基本概况
论坛排行
主题排行
发帖排行
积分排行
管理团队
管理统计
Copyright © 2001-2008 ChinaUnix.net All Rights Reserved 联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处
京ICP证041476号
清除 Cookies
-
ChinaUnix
-
Archiver
-
WAP
-
TOP
Processed in 0.055643 second(s), 4 queries , Gzip enabled
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
个人空间管理
升级个人空间
基本概况
论坛排行
主题排行
发帖排行
积分排行
管理团队
管理统计