RapidXML не анализируется при вызове со сценарием

У меня есть папка, отслеживаемая с помощью iNotify. Когда файл создается в папке, наблюдатель берет файл, переименовывает его (с помощью mv), а затем перемещает в другую папку. Затем вызывается программа RapidXML со сценарием bash, которая должна анализировать XML-содержимое файла. Программа iNotify также перезапускается после вызова скрипта программы RapidXML.

Итак, когда я запускаю программу RapidXML саму по себе, она анализирует файл и делает все, что должна. НО, когда я запускаю наблюдатель и файл XML помещается в каталог наблюдения, он обнаруживается, переименовывается, перемещается, но программа RapidXML зависает или вылетает (не уверен, какой именно) в момент

doc.parse<0>(&buffer[0]);

линия.

Вот раздел моего кода для программы RapidXML:

#include "xmlparser.h"

using namespace std;
using namespace rapidxml;

int main(int argc, char * argv[])
{
    //variable declaration left out for space purposes


xml_document<> doc;
xml_node<> * root_node;

ifstream theFile("config.xml");
vector<char> buffer((istreambuf_iterator<char>(theFile)), istreambuf_iterator<char>());
buffer.push_back('\0');

doc.parse<0>(&buffer[0]);
// find the root node
root_node = doc.first_node("configuration");
// iterate over the deltas
xml_node<> * deltas_node = root_node->first_node("deltas");

svn = boost::lexical_cast<double>(deltas_node->first_attribute("svn")->value());
svd = boost::lexical_cast<double>(deltas_node->first_attribute("svd")->value());
    ... //other variable assignments

xml_node<> * report_node = deltas_node->next_sibling("report");

optime = boost::lexical_cast<int>(report_node->first_attribute("optime")->value());
opstatusa = boost::lexical_cast<int>(report_node->first_attribute("opstatusa")->value());
... // other variable assignments

xml_node<> * timing_node = report_node->next_sibling("timing");

timing = boost::lexical_cast<int>(timing_node->first_attribute("timing"));

... // then I do some SQL stuff with the mysql cpp connector.

Кто-нибудь знает, почему он не хочет анализировать файл XML при вызове скрипта?


person Cornel Verster    schedule 13.12.2013    source источник
comment
Я заметил, что Rapidxml выдает ошибку сегментации при вызове с помощью скрипта, но не при вызове из терминала! Почему?   -  person Cornel Verster    schedule 17.12.2013


Ответы (1)


Кажется, если вы хотите использовать команду doc.parse‹0>, вы должны указать полный путь к файлу, поэтому в моем случае:

ifstream theFile("/home/root/xmlparser/config.xml");
person Cornel Verster    schedule 17.12.2013