Linux 父进程退出后如何进入子进程调试

paodan 2011-01-18 10:58:50
在调试守护进程过程中,遇到exit(0)后,程序 就退出了,如何让调试继续进行?例子:

#include<stdio.h>
#include<sys/types.h>
#include<sys/param.h>
#include<unistd.h>
#include<signal.h>
#include<sys/stat.h>
#include<time.h>
#include<syslog.h>
#include <dlfcn.h>
#include <errno.h>

int daemon_init(void)
{
pid_t pid;
int fd;
int i;
pid = fork();
if(pid<0)
{
perror("Fail to creat child process.\n");
return -1;
}
else if(pid>0)
{
printf("daemon parent exit,pid = %d\n",pid);
exit(0);//结束父进程,使得子进程成为后台进程
}

setsid();//建立一个新的进程组
pid = fork();
if(pid<0)
{
perror("Setsid failed.\n");
return -1;
}
else if(pid > 0)
{
exit(0);
}
for(i = 0; i < NOFILE; close(i++));
chdir("/");

umask(0);

return 0;

}

void sig_term(int signo)
{
if(signo == SIGINT)
/* catched signal sent by kill(1) command */
{
syslog(LOG_INFO, "program terminated.");
closelog();
exit(0);
}
}

int main(int argc,char **argv)
{
time_t now;
if(argc == 2)
{

if(!strcmp(argv[1],"-a"))
{

if(daemon_init() == -1)
{
printf("can't fork self\n");
exit(0);
}
openlog("Test", LOG_PID, LOG_USER);
syslog(LOG_INFO, "program started.");
signal(SIGTERM, sig_term); /* arrange to catch the signal */


while(1)
{
sleep(8);
time(&now);
syslog(LOG_USER|LOG_INFO,"系统时间: \t%s\t\n",ctime(&now));
}

}

return 0;

}

time(&now);
syslog(LOG_USER|LOG_INFO,"系统时间2: \t%s\t\n",ctime(&now));

}
...全文
218 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
leeyiqun 2011-01-18
  • 打赏
  • 举报
回复
在 setsid();//建立一个新的进程组
后面加一个:
signal(SIGHUP, SIG_IGN);
试试
你可以加多一些调试信息看看。
比如你可以在
setsid();//建立一个新的进程组
上面一行加一个打印信息看能不能进入到这里来。
paodan 2011-01-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 justkk 的回复:]
没用过,关注一下
[/Quote]哈哈,谢谢,网上搜一下,有调试子进程的,但是还没有知道怎么避开exit后调试
http://www.ibm.com/developerworks/cn/linux/l-cn-gdbmp/index.html
内容概要:本文档详细介绍了基于直驱永磁同步发电机(PMSG)的1.5MW风力发电系统在Simulink环境下的建模与仿真全过程,涵盖了风力机空气动力学模型、PMSG电磁特性建模、不可控整流与逆变电路、直流环节、空间矢量脉宽调制(SVPWM)技术以及核心控制策略的设计。重点实现了最大功率点跟踪(MPPT)控制以提升风能捕获效率,并构建了电压外环与电流内环协同工作的双闭环控制系统,通过仿真验证了系统在不同风速条件下稳定运行的能力及动态响应性能。; 适合人群:适用于具备电力系统、电机控制理论基础及Simulink仿真操作经验的研究生、科研人员和从事新能源发电系统开发的工程技术人员;特别适合正在进行风电系统建模、控制算法研究或完成相关毕业设计的专业人士。; 使用场景及目标:①深入理解直驱式PMSG风力发电系统的整体架构与工作机理;②掌握从物理部件建模到控制策略实现的完整Simulink仿真流程;③学习并复现MPPT控制、双闭环控制等关键技术方案;④为后续开展低电压穿越、并网稳定性分析、故障诊断等高级课题提供可靠的仿真平台支撑。; 阅读建议:建议结合Matlab/Simulink软件动手实践,逐模块搭建模型,重点关注各控制环节的参数设计与调试方法,同时可参照文中提供的其他风电相关资源进行拓展学习与对比分析。

23,223

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧