一个C程序代码来获取jar文件的文件版本,我们需要与某些版本进行比较并向用户展示,我们知道在Java中这很容易,但是我们只希望使用C语言
答案 0 :(得分:2)
使用 popen 执行unzip -p my.jar META-INF/MANIFEST.MF | grep 'Bundle-Version'
并获取结果
示例:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char ** argv)
{
if (argc != 2)
printf("Usage : %s <jarfile>\n", *argv);
else {
size_t len = strlen(argv[1]) + 56;
char * s = malloc(len);
FILE * fp;
sprintf(s, "unzip -p %s META-INF/MANIFEST.MF | grep 'Bundle-Version'",
argv[1]);
if ((fp = popen(s, "r")) == NULL)
fprintf(stderr, "error when executing '%s'\n", s);
else {
if (fscanf(fp, "Bundle-Version: %50s", s) == 1)
printf("version '%s'\n", s);
else
fprintf(stderr, "cannot get the version\n");
pclose(fp);
}
free(s);
}
}
编译和执行:
/tmp % gcc -pedantic -Wall -Wextra p.c
/tmp % ./a.out my.jar
version '1.5'