首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

mutt发送邮件失败解决办法

2013-06-26 
mutt发送邮件失败我的程序是一个服务器状态监控,当有告警信息产生时会发送告警邮件,发送邮件的方式是通过f

mutt发送邮件失败
我的程序是一个服务器状态监控,当有告警信息产生时会发送告警邮件,发送邮件的方式是通过fork产生一个子进程,然后调用脚本,用mutt去发送邮件,部分程序如下:

                memset(Fdesc,0,sizeof(Fdesc));
                snprintf(Fdesc,256,"/sbin/jump_mailalarm 1 "服务器%s 进程%s已停止"",inet_ntoa(IpAddr),ProcessName);
                        if((childpid = fork()) == 0)
                        {
                            int i = -1;
                            i = system(Fdesc);
                            printf("system finish,Fdesc is %s,i is %d,errno is %s\n",Fdesc,i,strerror(errno));
                            exit(0);
                        }
                        if (0 > childpid)
                        {
                            fprintf(fd,"fork error,errno is %s\n",strerror(errno));
                        }
                MONITOR_PRINTF("note Process +++++++++++=%s\n",Fdesc);

然后调用的脚本jump_mailalar中用mutt发送邮件,其中脚本最后的地方是:
if [ -n "$desc" ]; then
echo "$content" |/usr/bin/mutt -s "服务器监控-$alarmtype" $mail>/dev/null
echo "$content"
fi
我通过打印信息发现,echo“$content”的值已经打印出来了,说明已经调用了mutt,但是最后却收不到邮件,只要我重新启动一下我的程序,就可以收到邮件了。只要关闭邮件,然后等一会再打开就又收不到邮件了,除非重新启动程序。fork调用应该成功了,因为已经走到调用脚本的地方了。请教各位大师有可能什么地方出错了呢? linux?mutt?fork
[解决办法]
。。。system本来就是创建子进程,你还fork个毛。

为什么不用fork+exec或者直接system。

system finish,Fdesc这一句没打印说明脚本没跑完卡在那里了。

热点排行