我正在尝试从我在 linux (centos 64bit) 上的 C 程序发送一封电子邮件。以下(简化的)代码很有效:
asprintf(&cmd,"/usr/sbin/sendmail -oi -t -f me@blah.com somebody@blah.com");
asprintf(&bdy,"From: me@blah.com\nTo: somebody@blah.com\nSubject: blah blah\n\nThis is the message body\n");
FILE *out = popen(cmd,"w");
fprintf(out,"%s",bdy);
pclose(out);
问题是它会阻塞并在返回之前最多需要一两秒钟。如何在不阻止的情况下发送电子邮件?
更多信息:问题是 popen 阻塞并在返回之前等待完成。所以我可能正在寻找另一种使用 sendmail 的方法。我真的不想使用额外的库来处理所有的臃肿。如果可能的话,我宁愿不分叉。(popen 已经分叉,但在返回调用者之前等待完成)是否存在不阻塞的 popen 等价物?