Articles of c + +

在内核中使用printk

我正试图实现我自己的新schedule() 。 我想debugging我的代码。 我可以在sched.c使用printk函数吗? 我用printk但不起作用。 我错过了什么?

“(gdb)在qemu仿真arm架构上运行可执行文件时运行”崩溃

这是我的第一个信息,我写信给你,因为这次我不能真的把我从这个问题中解救出来。 我正在经历一个关于gdb的课程。 在后面的课程中,这个课程涵盖了ARM架构的debugging,所以我给出了一个让我模拟这种情况的设置。 我目前的设置是由: Windows 10:物理主机 Ubuntu 12.04.5 LTS:通过Windows 10上的Oracle Virtual Box访客操作系统 Linux debian-armel 2.6.32-5-versatile:在Ubuntu上通过qemu 2.8.0访客操作系统 ARM Debian镜像来自https://people.debian.org/~aurel32/qemu/armel/ 该图像与启动 qemu-system-arm -M versatilepb -kernel vmlinuz-2.6.32-5-versatile -initrd initrd.img-2.6.32-5-versatile -hda debian_squeeze_armel_standard.qcow2 -append "root=/dev/sda1" -m 256 -redir tcp:2222::22 我修改了sources.list和apt.conf以允许apt工作,因为de distro相当不合时宜。 我更新和升级并安装了gcc和gdb。 尝试debugging时出现问题:我可以在gdb中加载可执行文件 root@debian-armel:~/video-11/video-11# file ./main ./main: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), […]

Qt应用程序标题

我正在开发一个Qt应用程序 我设法使用methode来设置主窗口标题 setWindowTitle("my title"); 但是这会改变应用程序顶部的名称,它不会影响gnome shell(ubuntu)顶部显示的标题,也不会影响alt + tab显示的标题。 如何改变它? 我已经尝试在我的.pro文件中使用DEPLOYMENT.display_namevariables

重载fork()

我重载了fork()系统调用,并使用RTLD_NEXT创build了我自己的fork()版本。 也就是dlsym(RTLD_NEXT, fork) 。 这将打我的版本的叉子。 在这之后,我想复制实际fork()系统调用的任务,即创buildsubprocess并返回pid,以及一些更多的附加function。 我无法弄清楚如何做到这一点。 我检查了fork() (fork.c)的内核源代码,并没有弄清楚。 这样做: dlsym(RTLD_NEXT,fork); int fork(void) { int pid=_fork(); // Trying to call actual fork does not work return pid; } 我怎样才能做到这一点? 这里是fork的内核源代码链接: http : //lxr.linux.no/linux+v2.6.32/kernel/fork.c#L10 编辑(从评论拉入) : 我正在使用泄漏检测工具,并且此子工具在subprocess删除由父级分配的内存时检测到双重空闲。 为了克服这个,我将重写fork() ,并且每当有一个fork() ,父级的内存分配表将被复制到子级。

Linux发行版之间的二进制兼容性

对不起,如果这是一个明显的问题,但我发现在网上惊人的less数参考… 我正在使用由我们的业务合作伙伴之一用C语言编写的API,并以Fedora 11为基础构build的.so二进制文件提供给我们。我们已经在Fedora 11开发机器上testing了API,没有任何问题。 但是,当我尝试与客户的目标平台(恰好是SuSE Enterprise 10.2)上的API链接时,出现“文件格式未识别”错误。 也是binutils包(如objdump或nm)一部分的命令给我提供了相同的文件格式错误。 “文件”命令显示我: ELF 64-bit LSB shared object, AMD x86-64, version 1 (SYSV), not stripped 和“ldd”命令显示: ldd: warning: you do not have execution permission for `./libuscuavactivity.so.1.1' ./libuscuavactivity.so.1.1: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by ./libuscuavactivity.so.1.1) [dependent library list] 我猜这是由于两个平台上的C库之间不兼容,问题是代码是针对新版本的glibc等编译的,而不是SuSE 10.2上提供的。 我发布这个问题的机会是,有一种方法可以在合作伙伴的Fedora 11平台上编译代码,以便在SuSE 10.2上运行。

比x86_64 / linux上的glibc更快的math库?

是否有更快的glibc的libm(和头?)x86_64-linux的更换?

在ofstream :: close()返回后,文件是否保证可以立即读取?

我需要我的代码(Linux上的C ++)调用第二个可执行文件,之前已经编写了第二个程序读取的输出文件。 天真的做法, std::ofstream out("myfile.txt"); // write output here out.close(); system("secondprogram myfile.txt"); 遭受潜在的竞争条件,即使out.close()已经执行,该文件不能立即被第二个程序读取? 如果是这样,解决这个问题的最佳做法是什么? 三个笔记: 如果这是文件系统相关的,我对ext3和tmpfs的行为感兴趣。 显然还有其他原因(文件权限等)为什么第二个程序可能无法打开文件; 我只是对比赛条件的潜力感兴趣。 上面例子中的硬编码文件名是为了简单; 实际上我使用mkstemp 。

在Linux上debugging一个简单的字符驱动程序在device_create()上失败

我写了一个简单的字符驱动程序,现在想在udev中使用类自动注册它。 我的代码由驱动程序加载时调用的init函数和驱动程序加载其设备时调用的probe函数组成(当然还有它们的等价的exit和remove )。 问题:一旦添加新设备,执行device_create命令时,我的probefunction失败。 现在我想知道为什么: 我怎么能得到更多的信息,为什么这个命令失败(除了失败)? 缺less任何参数(比如我的全局声明fooClass是否存在问题,是否应该将其移至probe函数,而不是在我眼中做出反应,但在许多示例中显示)? 还是其他监督错误? 我的代码我剥离了大多数返回validation(如IS_ERR() )和清理function的可读性。 这两个variables是全局定义的: static int foo_majNbr; static struct class *fooClass; init函数: static int __init foo_init(void) { int rv; dev_t devNbr; /* Registering driver */ rv = pci_register_driver(&foo_driver); /* —-> see answer below for correct order <—- */ /* Create device class */ fooClass = class_create(THIS_MODULE, CLASS_NAME); /* […]

如何确定一个文件是否是一个链接?

我有下面的代码只有它的一部分显示在这里 ,我正在检查如果文件的types。 struct stat *buf /* just to show the type buf is*/ switch (buf.st_mode & S_IFMT) { case S_IFBLK: printf(" block device\n"); break; case S_IFCHR: printf(" character device\n"); break; case S_IFDIR: printf(" directory\n"); break; case S_IFIFO: printf(" FIFO/pipe\n"); break; case S_IFLNK: printf(" symlink\n"); break; case S_IFREG: printf(" regular file\n"); break; case S_IFSOCK: printf(" socket\n"); […]

如何使用callback函数来获取Tizen中的方向?

我想在C中编写一个本地应用程序,以获得Tizen的定位价值。 编译后的C代码必须在Tizen手机上运行,​​我需要获取定位的价值。 我从Tizen源获得的callback函数是 int app_cb_broker_appcore_rotation_event(enum appcore_rm rm, void *data) { app_device_orientation_cb device_orientation_cb; device_orientation_cb = app_context.callbacks->device_orientation; if (device_orientation_cb != NULL) { app_device_orientation_e dev_orientation; dev_orientation = app_convert_appcore_rm(rm); device_orientation_cb(dev_orientation, app_context.user_data); } return 0; } 如何使用这个函数来获取当前方向的值?