GraphViz в памяти рендеринга появляется на стандартный вывод - PullRequest
0 голосов
/ 21 октября 2019

Я звоню в GraphViz из Java через JNI, чтобы выложить графики. Когда я вызываю функцию gvRenderData из библиотеки GraphViz gvc, которая рендерит макет графа в атрибут malloc'а (вместо файлового ввода-вывода), к сожалению, я также вижу, что визуализированный граф появляется на консоли. Так что на самом деле gvRenderData, похоже, также пишет в стандартный вывод. Это настоящая неприятность для графов с тысячами узлов. Я пытался передать аргументы типа -o/dev/null в контекст GraphViz, но безрезультатно.

Кто-нибудь знает, как отключить это нежелательное поведение? Я использую GraphViz 2.40.1 под Linux.

Вот основы моего кода. Там нет сюрпризов. Собственные интерфейсы были созданы с помощью SWIG.

SWIGTYPE_p_GVC_t gvCtx = gvc.gvContext();
String[] argv = {"dot", "-y", "-q"};
gvc.gvParseArgs(gvCtx, argv.length, argv);
SWIGTYPE_p_graph_t graph = cgraph.agmemread(dot);
gvc.gvLayout(gvCtx, graph, "dot");
String[] rendered = new String[1];
gvc.gvRenderData(gvCtx, graph, "json", rendered, new long[1]);
...