Articles of c + +

为什么 – 错误导致configuration错误

我想从源代码生成nginx。 所以我写了一个bash脚本来做到这一点: #!/bin/bash export LD_LIBRARY_PATH="/usr/lib64:$LD_LIBRARY_PATH" dir=$(realpath `dirname $BASH_SOURCE`) cd $dir/modules for folder in * do ADD_MODULES="$ADD_MODULES \ –add-module=$dir/modules/$folder" done cd $dir/nginx ./auto/configure \ –prefix=/usr/share/nginx \ –sbin-path=/usr/sbin/nginx \ –conf-path=/etc/nginx/nginx.conf \ –error-log-path=/var/log/nginx/error.log \ –http-log-path=/var/log/nginx/access.log \ –http-client-body-temp-path=/var/lib/nginx/tmp/client_body \ –http-proxy-temp-path=/var/lib/nginx/tmp/proxy \ –http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi \ –http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi \ –http-scgi-temp-path=/var/lib/nginx/tmp/scgi \ –pid-path=/run/nginx.pid \ –lock-path=/run/lock/subsys/nginx \ –user=nginx \ –group=nginx \ –with-file-aio \ –with-ipv6 \ […]

在Raspberry Pi的Linux环境中出现Windows Forms错误

我已经开发了完全在Windows中工作的完整应用程序。 我现在已经在Linux(Debian on RPi)上安装了mono,并且正在执行该应用程序。 第一种forms(login表单)加载完全正常。 在此表单上input用户详细信息,如果详细信息正确,则应closures该表单并打开下一个表单。 下面的代码是从login表单,并执行一次我按“login”: this.Hide(); Entry_System fm = new Entry_System(); fm.ShowDialog(); this.Show(); 但是,在Linux中,表单只是closures并发生以下错误: System.TypeLoadException:发生types加载exception。 System.Windows.Forms.Control.OnClick(System.EventArgs e)[0x00000] in:System.Windows.Forms.Button.OnClick(System.EventArgs e)中的0; System.Windows.Forms中的[0x00000] in:0 .ButtonBase.OnMouseUp(System.Windows.Forms.MouseEventArgs mevent)[0x00000] in:0 System.Windows.Forms.Button.OnMouseUp(System.Windows.Forms.MouseEventArgs mevent)[0x00000] in:0 at System.Windows .Forms.Control.WmLButtonUp(System.Windows.Forms.Message&m)[0x00000] in:0 System.Windows.Forms.Control.WndProc(System.Windows.Forms.Message&m)[0x00000] in:0 at System .Windows.Forms.ButtonBase.WndProc(System.Windows.Forms.Message&m)[0x00000] in:0 at System.Windows.Forms.Button.WndProc(System.Windows.Forms.Message&m)[0x00000] in:0 System.Windows.Forms.Control + ControlWindowTarget.OnMessage(System.Windows.Forms.Message&m)[0x00000] in:0 at System.Windows.Forms.Control + ControlNativeWindow.WndProc(System.Windows.Forms.Message&m) System.Windows.Forms.NativeWi中的<filename unknown>中的[0x00000]:0 ndow.WndProc(IntPtr hWnd,Msg msg,IntPtr […]

如何使用正则expression式来确定Linux上C / C ++文件组的存在和大小?

我有一个Linux系统上的程序,用于生成需要访问的可预测文件名的数据日志文件,但是我必须通过C / C ++接口来完成。 访问数据的程序需要能够使用正则expression式获取文件path来指定某些文件名称范围,并执行以下操作: 确定是否存在与存在的正则expression式匹配的文件 确定所有匹配文件的总大小 我在压缩和传输文件之前使用这些作为检查。 我怎样才能在C / C ++中做到这一点?

无法识别的音乐格式使用SDL播放mp3文件

#include <SDL/SDL.h> #include <SDL/SDL_mixer.h> #include <stdio.h> #include <stdlib.h> Mix_Music *play_sound = NULL; void cleanUp(); int main(int argc, char* args[]) { int channel; int audio_rate; Uint16 audio_format; int audio_channels; int audio_buffers; if(SDL_Init(SDL_INIT_AUDIO)<0) printf("Error In Init"); audio_rate = 44100; audio_format = AUDIO_S16; audio_channels = 2; audio_buffers = 4096; if(Mix_OpenAudio(audio_rate, audio_format, 2, 4096)<0) { //Some error shows here […]

指向对象types的指针

我一直在尝试创build一个类的层次结构,每个类都包含一个包含数据的嵌套结构。 ////////Class.h//////////////////////////// #ifndef _CLASS_H_ #define _CLASS_H_ #include <stdio.h> class A{//Base protected: struct dataA{ int v1, v2; }; public: A(); virtual void met1(); dataA * const set; const dataA * const get; }; class B : public A{//Child1 protected: struct dataB : public dataA{ int v3, v4; }; public: B(); virtual void met2(); dataB * const […]

在获取函数地址时如何获得RTLD_LAZY行为?

我们有一个很大程度上依赖于使用dlopen()加载模块的系统。 我们的模块是自我描述的,带有一个符号,指向一些与加载模块相关的元数据(描述,加载顺序,加载标志等)。 我们首先将指定RTLD_LAZY标志的模块加载到dlopen()中,从元数据中获得我们需要的内容,然后稍后加载模块(在我们知道加载顺序应该是什么,它们应该如何加载等) 。 这一段时间工作得很好,但是最近我们发现,获取函数的地址需要在加载时parsing函数。 有什么办法可以解决这个问题? 我已经放了一个相当小的例子来说明问题。 /* foo.h */ void foo(void); /* foo.c */ void foo(void) {} /* bar.c */ #include "foo.h" /* Calls foo normally */ void bar(void) { foo(); } /* bam.c */ #include "foo.h" static void (*f)(void); /* Takes the address of foo */ void bam(void) { f = foo; } […]

从pci- / pcie-card读取芯片ID

几个月前,我不得不写一个小工具来编写rtl8139卡的eeprom。 这基本上是剔除 /读写eeprom的rtl8139-diag工具。 这个工具必须扩展到现在可以编程rtl8101卡的eeprom。 这不是一个问题,因为eeprom的接口类似于rtl8139的接口。 其实唯一的区别就是eeprom文件的内容。 我想要实现的是一个自动检测,如果在给定的端口地址的卡是rtl8139或rtl8101,并select拟合的eeprom-dump,则会进行检查。 我不能通过读出eeprom来确定这些芯片的差异,因为要编程的卡是'virgin',eeprom的内容基本上是0xffff 。 我注意到,无论eeprom的内容是什么,Linux都会加载这些卡的适配驱动程序。 所以我想,我只需要读取卡的芯片ID。 我怎么做?

如何在linux / c ++中控制主音量?

具体来说,我使用的是Fedora 13,但是我相信Linux的所有Gnome-ish代码都是相似的。 我只需要能够使用C ++来调整主音量,并且完成如同在“系统托盘”中的扬声器图标上上下移动滑块一样的效果。 什么是最好的和最简单的方法来编码?

在这个过程中,怎么能告诉一个进程的父进程?

我知道getppid检索底层程序的父pid,但是你怎么能告诉这个程序呢? 我在/proc/[pid]找不到任何有用的东西,或者是否有任何有用的API可以使用? UPDATE 我的意思是,我正在用另一个进程来检查这些进程,所以getppid在这里不起作用

堆alignment的记忆保护神秘地工作

所以我试图检查,如果我可以正确地使用mprotect更改mmapped分配内存的访问权限,这就是我写的: #include <stdio.h> #include <sys/mman.h> #include <malloc.h> #include <unistd.h> void main() { int pagesize; pagesize = getpagesize(); void *p; p = malloc(pagesize); getchar(); int q = posix_memalign(&p, pagesize, pagesize); getchar(); int a = mprotect(p, pagesize, PROT_READ | PROT_WRITE | PROT_EXEC); getchar(); free(p); } 现在每个函数后,我使用getchar来分析我的内存段使用cat /proc/<pid>/maps文件,这就是我得到:(只显示关于堆的信息,因为这是我唯一担心的) posix_memalign : 01776000-01798000 rw-p 00000000 00:00 0 [heap] mprotectfunction之后: 01776000-01778000 […]