【发布时间】:2016-01-14 03:41:07
【问题描述】:
我想要做的是在退出我的程序时发送一封电子邮件。
我使用atexit(); 函数来执行此操作,但是...它无法正常工作。
#include <windows.h>
#include <iostream>
void SendEmail()
{
//lot of code here
}
void Print()
{
std::cout << "Bye!";
system("pause");
}
void Terminate()
{
SendEmail(blahblah); // Doesn't work
Print(); // Works
}
int main()
{
atexit(Terminate);
while (true) Sleep(1);
return 0;
}
SendEmail(); 函数是否花费了太多时间并且什么都不做?它甚至不打印服务器响应(在main(); 中使用时效果很好)
【问题讨论】:
-
好吧,您的示例中的
SendEmail()函数不采用blahblah参数,甚至在您的示例中都没有定义。然后我敢说问题出在//lot of code here的某个地方……你之前有没有在main()中成功地尝试过你的realSendEmail()? -
注册的
atexit处理程序仅在正常退出期间运行,而不是在进程被终止时运行......并且您没有为正常退出留下任何机制。 -
欢迎来到编程,遇到任何问题的第一步都是将问题分解为更小的可管理任务。例如,在这种情况下,当您将
SendEmail()更改为不属于atexit()时,您是否知道它是否有效?如果您不知道这一点,请在寻求帮助之前了解这一点。 -
你是如何退出你的程序的? CTRL+C?
kill -KILL pid?TerminateProcess()?崩溃了? -
编译所有警告和调试信息(例如
g++ -Wall -Wextra -g,如果使用GCC....)然后使用调试器(例如gdb),特别是通过在SendEmail函数上设置断点