Tag: tcl

TCL-C API:Tcl_LinkVar函数使用

我试图将一个Tcl变量链接到一个C变量,以便在C线程创建过程中将指针传递给最新,并有一个TCL-C线程共享变量(我不认为我可以使用本机TCL线程共享变量函数) 。 链接这两个变量我有些困难。 我是这样做的: #Tcl code, calling the C function: set linkedVar 98 puts “linkedVar: $linkedVar” load [file join [pwd] libCextension[info sharedlibextension]] set threadId [createThreadC] puts “Created thread n° $threadId” puts “linkedVar: $linkedVar” createThreadC函数创建一个C线程,返回其ID并尝试使用linkedVar创建一个链接。 // C function called by Tcl static int createThreadC_Cmd( ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]) { int linkedVar=2; […]

alloc:invalid block – 对于每个线程的线程Tcl / 1 interp,Tcl_IncrRefCount和Tcl_DecrRefCount线程是否安全?

我们的32位服务器应用程序静态嵌入tcl 8.4.11。 在Red Hat Linux 6.5 64位上,我们遇到崩溃/核心转储。 失败的样子 alloc:无效块:0xf6f00f58:88 f6 0 在问题的底部,我记录了我们见过的两个不同的核心转储。 我们已经将潜在的根本原因隔离到两个线程之间共享的TCL对象,并同时运行单独的TCL解释器实例。 我们认为这是因为TCL对象从这些并发执行的TCL解释器传递给Tcl_IncrRefCount / Tcl_DecrRefCount。 当TCL编译为线程时,Tcl_IncrRefCount / Tcl_DecrRefCount线程是否安全? TCL对象是否由TCL解释器实例共享? 有没有办法在解释器实例之间禁用TCL对象共享? 在TCL版本8.6.3中情况有所改善吗? (gdb) bt #0 __kernel_vsyscall () at arch/x86/vdso/vdso32/sysenter.S:49 #1 0x001b7871 in raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64 #2 0x001b914a in abort () at abort.c:92 #3 0x080f611c in Tcl_PanicVA () #4 0x080f613b in Tcl_Panic () #5 0x0810133c […]

在C程序中使用tcl和tk存根

我需要一个简单的C程序,它创建tcl解释器,初始化tcl和tk,然后加载给定的tcl / tk脚本。 我想使用tcl和tk存根(以确保程序将在具有不同版本的tcl / tk的计算机上运行)。 我将使用此程序而不是运行wish(因为我有可移植性问题)。 #include #include #include #include int AppInit(Tcl_Interp *interp) { if(Tcl_Init(interp) == TCL_ERROR) return TCL_ERROR; if(Tk_Init(interp) == TCL_ERROR) return TCL_ERROR; Tcl_EvalFile(interp,”myscript.tcl”); return TCL_OK; } int main(int argc, char *argv[]) { Tk_Main(argc, argv, AppInit); return 0; } 我尝试使用以下命令编译(在GNU / Linux上)。 程序编译没有错误,但随后停止分段错误。 gcc -I/usr/include/tcl8.5 -DUSE_TCL_STUBS -DUSE_TK_STUBS -o main.exe ../main.c /usr/lib/libtclstub.a /usr/lib/libtkstub.a

我可以使用pcap库接收ipv6数据包吗?

我正在尝试将hping3转换为hping6。 hping3使用Pcap库接收IPv4数据包。 但我需要接收IPv6数据包。

如何将GUI改装为现有的C程序?

我一直致力于一个移植旧的solaris CL程序以在Linux上运行的项目,并禁止一些不相关的硬件问题,这已经完成。 现在我想要一个GUI,因此用户可以选择带有下拉菜单和复选框的各种选项,以及一些不受限制的选项的文本输入区域,如文件名。 (该程序是运行一些光谱扫描仪并将结果存储为CSV文件的内部工具。它处理所有这些选项,运行扫描仪并处理信息并使用指定的文件名存储它;我只想要比CL更好的使用。 ) 我见过这样的事情的唯一一次是一个PyGTK + GUI与C代码的python绑定(我认为它是什么;这是我的第一个学期合作,我不太了解!)。 这比我现在要进入的要多一点; 有一个相对简单的方法来做到这一点? 当我用Google搜索时,我找到了SWIG( http://www.swig.org/index.php ); 这是一个好方法吗?