尝试将varnishlog的输出传递给C语言中的perl。
代码如下:
如何显示evalExpression的信息?
e.g。
evalExpression("open(my $file,'varnishlog -u -c -i ReqStart,RxURL,RxHeader |') or die $!; \
while (<$file>) {$data = $_;}; \
close $file; \
");
printf("data = %s\n", SvPV(perl_get_sv("data", FALSE), length));
以上数据仅在运行时显示...这意味着如果正在运行,它将永远不会显示...
帮助表示赞赏。感谢
#include <stdio.h>
#include <EXTERN.h>
#include <perl.h>
static PerlInterpreter *my_perl;
int evalExpression(char *evaluatedString)
{
char *argv[2];
argv[0] = evaluatedString;
argv[1] = NULL;
perl_call_argv("_eval_", 0, argv);
}
main (int argc, char **argv, char **env)
{
char *codeToUse[] = { "", "-e", "sub _eval_ { eval $_[0] }" };
STRLEN length;
my_perl = perl_alloc();
perl_construct( my_perl );
perl_parse(my_perl, NULL, 3, codeToUse, env);
evalExpression("open(my $file,'varnishlog -u -c -i ReqStart,RxURL,RxHeader |') or die $!; \
while (<$file>) {$data = $_;}; \
close $file; \
");
printf("data = %s\n", SvPV(perl_get_sv("data", FALSE), length));
perl_destruct(my_perl);
perl_free(my_perl);
}