getenv() возвращает ноль в UDF MySQL

У меня странная проблема с функцией C/C++ getenv (). Эта функция используется в MySQL UDF в системе Linux (Linux Mint 16 Cinnamon 64bit). Я установил переменную среды JAVA_HOME для всей системы, отредактировав файл / etc / environment, и он печатается в оболочке вместе со всеми другими переменными при использовании команды env, как пользовательской, так и корневой. Код прост и выглядит следующим образом:

char *javaHome;   
javaHome = getenv("JAVA_HOME");
if (!javaHome) {
    char *m = "Error getting JAVA_HOME variable";
    strcpy(message, m);
    return 1;
}

UDF постоянно возвращает сообщение об ошибке в условии, и, следовательно, переменная javaHome всегда равна нулю. Я создал еще одну простую программу на C++ и поместил файл cpp в каталог плагинов MySQL, где находится скомпилированная библиотека UDF (/ usr / lib / mysql / plugin).

#include <iostream>
#include <stdlib.h>

using namespace std;

int main() {        
char *javaHome = getenv("JAVA_HOME");
cout << javaHome;
return 0;
} 

Код возвращает значение переменной iepath в JRE, как и ожидалось. Код UDF отлично работает в моей системе Windows, но чтобы заставить его работать в системах Unix, мне пришлось немного адаптировать код и заменить функцию GetEnvironmentVariableA() на getenv (). Я не могу понять, в чем проблема. Любые указатели будут оценены.

РЕДАКТИРОВАТЬ: Я проверил результат переменной "HOME", и вывод был любопытно /etc/mysql/ вместо / root /, как я и ожидал. У UDF есть своя собственная среда или что-то подобное?

0 ответов

Другие вопросы по тегам