首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >第二次运行tshark.c源文件后的致命错误

第二次运行tshark.c源文件后的致命错误
EN

Stack Overflow用户
提问于 2019-03-01 15:19:23
回答 1查看 111关注 0票数 0

我希望从源文件(即用C语言写的tshark.c )中运行Tshark,而不是使用终端和下面的命令:

代码语言:javascript
复制
tshark -r my.pcap ...

因此,我将tshark.c的主要功能从:

代码语言:javascript
复制
int
main(int argc, char *argv[])
{
  return real_main(argc, argv);
}

至:

代码语言:javascript
复制
int
tshark_main(char arg0[],char arg1[],char arg2[],char arg3[],char arg4[],char arg5[],char arg6[],char arg7[])
{
    int argc=8;
    char* const  argv[] = {arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,NULL};
    return (real_main(argc, argv));
}

以便从另一个函数调用主函数。在此之后,我创建了一个由tshark.c和其他依赖项组成的库,并按如下方式创建了所需的包含文件:

代码语言:javascript
复制
#ifndef __TSHARK_H__
#define __TSHARK_H__

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

#ifdef _WIN32
int
wmain(int argc, wchar_t *wc_argv[]);
#else
int
tshark_main(char arg0[], char arg1[], char arg2[], char arg3[], char arg4[], char arg5[], char arg6[], char arg7[]);
#endif


#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* tshark.h */

在接下来的步骤中,我将上述lib和*.h文件添加到我的C++项目中,并按如下方式调用tshark_main函数:

代码语言:javascript
复制
char arg0[]="";
char arg1[]="-o";
char arg2[]="uat:user_dlts:\"User 0 (DLT=147)\",\"RRC.SI.SIB1\",\"0\",\"\",\"0\",\"\"";
char arg3[]="-r";
char arg4[]="my1.pcap";
char arg5[]="-V";
char arg6[]="";
char arg7[]="";
tshark_main(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7);
char arg4[]="my2.pcap";
tshark_main(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7);

但是,在tshark_main(...)第二次调用(最后一行)中,出现如下致命错误:

代码语言:javascript
复制
** (process:8445): ERROR **: 18:05:33.070: file type short name already exists

我认为这个错误是因为源文件中定义的静态变量,当我第一次调用tshark_main(...)时,每件事情都是正常的,当我在第二次或更多次调用它时,变量已经改变了。因为Wireshark可以一遍又一遍地剖析数据包和文件,所以我需要一个初始化方法或类似wireshark用来重置静态变量的东西,但是我不知道它在哪里。另外,在第二次调用tshark_main(...)之前,可能还有第二种方法来重置每一件事情,而我不知道该如何做。每个人都能告诉我解决办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-05 02:09:12

什么是正确的调用?

正确的调用不是尝试两次运行主函数,因为它将尝试两次注册文件类型读取器,并给出有问题的错误消息。

这是与这个ask.wireshark.org问题相同的问题,答案也是一样的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54947500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档