Я звоню в 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]);