2013-01-23 17 views
1

在服务器上,我有一个C++程序,它需要一些输入并将一些输出写入文件。文件生成后,我想发送一封电子邮件给与该文件相应链接的人。C++调用python脚本来处理电子邮件

我宁愿避免SMTP从C++本身打交道,所以我想到了有C++使用系统调用来执行一个Python脚本,这反过来处理收发邮件的过程。

在C++:

system("python emailer.py [email protected] filetodownload.txt"); 

在Python:

import sys 
email = sys.argv[1] 
file = sys.argv[2] 
// handle SMTP emailing... 

我有一个关于这个简单的方法问题。 C++程序是多线程的,因此可能有多个线程希望调用python脚本来发送电子邮件。这是一个问题吗?一个(又是简单的)解决方案是否在C++程序中有一个互斥变量,它只允许一个线程一次调用python脚本?另外,如果有更好的方法去完成这个任务,请让我知道。

+1

你可以将电子邮件推送到数据库,并让python脚本轮询它并从那里发送任何电子邮件。 – sean

+0

其实电子邮件已经在数据库中了(我有一个从c + +的接口,所以只是想通过它传递它)。但是如果我理解你的观点,你的意思是说这个剧本就是说“一份工作已经准备好发送电子邮件了”。脚本然后查询以找到需要发送哪些作业。是对的吗? 编辑:也就是说,脚本可能会发现,如果两个作业同时完成,可能需要发送多个电子邮件。 – Aaron

+1

或者只是让脚本不断运行,当它耗尽工作时,等待某些东西(无论是来自DB的东西,还是简单的POSIX信号或信号量或Windows EVENT或来自C++代码的任何东西),它告诉它“开始寻找 – abarnert

回答

3

从你已经证明我没有看到任何共享资源,将要求任何多线程同步的。每个系统调用python都会导致一个单独的进程。

+0

这或多或少是我所掌握的。感谢您的澄清。 – Aaron