C程序获取jar文件的版本

时间:2019-03-29 11:29:31

标签: c

一个C程序代码来获取jar文件的文件版本,我们需要与某些版本进行比较并向用户展示,我们知道在Java中这很容易,但是我们只希望使用C语言

1 个答案:

答案 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'