Articles of c + +

gdb – 列出当前函数的来源而不input其名称

在GDB中,命令: list function 将列出该function的所有来源。 是否有一个命令会列出当前所有函数的源代码,而不需要手动input函数名称?

selectEBADF:哪个FD不好?

我们的生产代码中有一个长期存在的bug。 这本质上是一个基于套接字的守护进程。 它使用select来监听一堆文件描述符。 偶尔(每天一次),select将返回与EBADF。 我已经编写了代码来search不良的filedescriptor,循环遍历每个fd并调用select。 这些调用永远不会返回EBADF。 我也试过fstat。 他们也永远不会返回EBADF。 我也重写了守护进程来使用poll。 这没有帮助。 有没有人有其他的想法? (除了我犯了一个愚蠢的错误,这是所有select易于做)。

statvfs()和statfs()系统调用之间的区别?

为什么statfs()和statvfs()调用在它们如此相似时都存在? 在什么情况下我会比另一个更喜欢?

在C ++中计算一个string的MD5

我有一个很好的内存映射文件的例子,计算文件的MD5哈希值。 这工作正常,没有问题。 我想改变它来计算一个string的MD5散列。 所以这个例子是: (包括#include <openssl/md5.h>来运行这个代码,并且如果你想用文件运行这个代码的话, unsigned char result[MD5_DIGEST_LENGTH]; boost::iostreams::mapped_file_source src(path); MD5((unsigned char*)src.data(), src.size(), result); std::ostringstream sout; sout<<std::hex<<std::setfill('0'); for(long long c: result) { sout<<std::setw(2)<<(long long)c; } return sout.str(); 我做的改变是: std::string str("Hello"); unsigned char result[MD5_DIGEST_LENGTH]; MD5((unsigned char*)str.c_str(), str.size(), result); std::ostringstream sout; sout<<std::hex<<std::setfill('0'); for(long long c: result) { sout<<std::setw(2)<<(long long)c; } return sout.str(); 但是这产生了结果: 8b1a9953c4611296a827abf8c47804d7 而命令$ md5sum […]

可以-std = c99防止我的#包含工作正常吗?

我想在Linux系统上编译一个C程序。 我有一个stdlib.h的#include语句。 当我用gcc编译程序时,如下所示: gcc -std=c99 -g -o progfoo progfoo.c progbar.c 我收到有关Implicit declaration of function [srand48, drand48, bzero, or close]警告。 编译为: gcc -g -o progfoo progfoo.c progbar.c 没有给我警告,但它确实对我使用for循环(这是首先添加-std=c99的理由)大喊大叫。 鉴于这个man srand48提到包括我所拥有的<stdlib.h> ,我不确定还有什么问题可以解决。 for循环对于任何事情来说都不是必须的(它们只是为了节省初始化数组的时间),所以我没有问题去除它们,但是在我做之前我想确认c99标准是否取代了我的#include陈述。 我正在使用gcc 4.1.2-50 (Red Hat) 。

如何在C ++中执行caching操作?

我想在刷新caching后运行我的C ++程序,在运行我的程序之前,我不知道caching中有什么。 在unbuntu上有没有其他的C ++方式,通过它我可以在运行我的程序之前刷新caching。 编辑:刷新caching的动机是…每次我运行我的程序,我不希望我现有的数据结构在caching中有…我的意思是我想要一个冷藏caching..其中所有的访问是从磁盘制作…实现这一目标的一种方式是重新启动计算机…但考虑到我必须运行的实验数量,这对我来说是不可行的。 所以,任何人都可以善意引导我…至于我怎么能做到这一点。

静态链接 – 使用GTKmm应用程序? – 修改

是否可以在Gtk(mm)程序上进行静态链接(编译)? 我需要程序减less对用户系统依赖的中继。 我尝试: g++ -static data/Area.h data/Picture.cpp data/GLScene.cpp data/KBDialog.cpp data/Dialogs.h data/FilePreview.cpp data/MainWindow.cpp prog.cpp -o prog `pkg-config –cflags –libs gtkmm-2.4 gtkglextmm-1.2 exiv2` 但是它失败了: /usr/bin/ld: cannot find -lgtkmm-2.4 /usr/bin/ld: cannot find -lGL /usr/bin/ld: cannot find -latkmm-1.6 /usr/bin/ld: cannot find -lgdkmm-2.4 /usr/bin/ld: cannot find -lpangomm-1.4 /usr/bin/ld: cannot find -lgdk_pixbuf-2.0 /usr/lib/gcc/i686-linux-gnu/4.4.5/../../../../lib/libgio-2.0.a(glocalfileinfo.o): In function `lookup_gid_name': (.text+0x207a): warning: Using 'getgrgid_r' in […]

如何从ac程序运行java程序?

我已经search了这个,但结果是10岁以上,并没有解释什么是JNI是否是唯一的方法,或结果是C + +或C#。 所以这是我的问题: 如何使用下面的代码作为例子从C程序运行Java程序? 我对下面的代码做了哪些具体的修改,让C程序成功调用带有参数的java程序? 在CentOSterminal中,当我在命令行input以下内容时,我能够成功运行一个java程序: java -cp . my.package.SomeClass 1 2 3 同样,从terminal中的同一个文件夹,我可以成功地运行一个C程序时,我在命令行中键入以下内容: ./hello hello.c的代码是: #include <stdio.h> main() { printf("Hello World from C!\n"); } 我如何修改hello.c的代码,以便它也运行带有参数1 2 3 my.package.SomeClass ? 例如,如何完成以下操作,但不会引发错误: #include <stdio.h> main() { printf("Hello World from C!\n"); java -cp . my.package.SomeClass 1 2 3 //What is the right syntax here? } 编辑 […]

无法编译Android的LKM

我有Ubuntu 12.04作为编译环境。 我也有Cyanogen mod内核的源代码(从Github获得: https : //github.com/CyanogenMod/cm-kernel ) 我使用Android NDK r5c 工具链 (for linux) 我有以下代码: #include <linux/kernel.h> #include <linux/module.h> #include <asm/unistd.h> asmlinkage ssize_t (*orig_open)(const char *pathname, int flags); asmlinkage ssize_t hooked_open(const char *pathname, int flags) { printk(KERN_INFO "SYS_OPEN: %s\n", pathname); return orig_open(pathname, flags); } void **sys_call_table; static int __init root_start(void) { sys_call_table= (void *) 0x0030084; […]

如何在C,C ++的Linux操作系统上启动进程

我有无线USB适配器,我使用“pstree”命令来监视所有进程。 当我将USB适配器插入Linux操作系统时,使用“pstree”命令查看新进程“wpa_supplicant”。 我用C / C ++语言。 我知道Linux操作系统将使用“NetworkManager”守护进程来监控networking(eth,蓝牙,wifi等),但我不知道如何启动“wpa_supplicant”? 我可以使用dbus或systemd吗? 感谢Thong LT