Articles of c + +

Linux fork / exec到同一个目录下的应用程序

是否有一个exec变体,将使用当前的应用程序目录来定位目标程序? 我正在使用C ++和Qt来实现“最后的沟渠”错误报告系统。 使用Google Breakpad ,我可以创build一个小型转储并直接执行到一个处理程序。 因为我的应用程序处于不稳定状态,所以我只想使用最小的依赖关系来分叉并启动一个单独的error handling过程。 错误报告应用程序将被部署在与应用程序可执行文件相同的目录中。 我很不熟悉fork和exec选项,并且没有find包含searchpath中当前应用程序目录的exec选项。 这是我到目前为止: static bool dumpCallback(const char* /*dump_path*/, const char* /*minidump_id*/, void* /*context*/, bool succeeded) { pid_t pid = fork(); if (pid == 0) { // This is what I would *like* to work. const char* error_reporter_path = "error_reporter"; // This works, but requires hard-coding the entire […]

X86 64位汇编Linux'Hello World'连接问题

我试图跟进这个线程 ,不幸的是不能解决我的问题。 我试图运行的代码如下所示: ; File hello.asm section .data msg: db "Hello World!",0x0a,0 section .text global main extern printf main: push rbp mov rbp, rsp lea rdi, [msg] ; parameter 1 for printf xor eax, eax ; 0 floating point parameter call printf xor eax, eax ; returns 0 pop rbp ret 我的系统是debian stretch: $ uname […]

glPopMatrix()在“setup_hardware_state”中喊出“不受支持的纹理格式”

我试图在Linux的私人video播放器中进行一些优化,旨在提高性能,因为播放MP4文件在CPU上很重 ,因为video帧是用YV12编码的,而OpenGL不提供本地方式来显示这种格式。 现在有一个代码在CPU上运行,将图像发送到GPU进行显示之前将YV12转换为RGB,这样就消耗了100%的CPU处理量。 我目前正在研究如何解码YV12帧,而不必编写着色器来执行YV12 – > RGB转换。 据我所知,做到这一点的一种方法是通过GL_MESA_ycbcr_texture ,显然是由我的系统(由glxinfo报告)支持。 在这个Fedora Box中,我有一个ATI Technologies公司的RV610video设备[Radeon HD 2400 PRO] ,这是一个体面的video卡。 然后,我下载了yuvrecttesting,并进行了一些更改,以replace此卡所支持的纹理GL_TEXTURE_RECTANGLE_ARB : GL_TEXTURE_RECTANGLE_ARB 。 但是,当我执行这个修改后的应用程序时,输出: The MESA driver reports *unsupported texture format in setup_hardware_state* 我注意到,这个错误显示当glPopMatrix(); 从Display()callback中执行。 现在, 这似乎不是我的应用程序中的一个错误,因为我在另一个具有不同video卡的Fedora盒(同一系统)上运行完全相同的代码: Intel Corporation Sandy Bridge集成graphics控制器(09版) beatifully。 这两个二进制文件之间唯一可见的区别是它们所链接的库。 在(有问题的)ATI卡ldd报告: linux-gate.so.1 => (0x00da3000) libGL.so.1 => /usr/lib/libGL.so.1 (0x077bd000) libGLU.so.1 => /usr/lib/libGLU.so.1 (0x0783b000) libglut.so.3 => /usr/lib/libglut.so.3 […]

用于Linux的C ++ IDE,具有智能参考searchfunction

是否有一个IDE支持C + +真正的智能search引用? “引用”是指在整个项目或工作空间中使用类(或其成员),variables,函数。 有很多IDE提供它。 其中一些似乎只是search同名的文本给予很多的东西,其他人更聪明,并检查上下文(如类边界,命名空间),但不够准确。 迄今为止我所尝试的最好的是Visual SlickEdit,但还有更多的希望。 class C1 { int foo; }; class C2 { int foo; }; 例如,在searchC1::foo引用的情况下,我不希望C2::foo也显示出来。 那么,有没有一个IDE会非常聪明? EDIT2 目前为止,每个人都有10个答案。 我尝试了Eclipse ,引用search似乎相对较好,但它需要20分钟索引中等大小的项目和5的4次内存耗尽和崩溃。 我试图增加它和其他一些build议,并得到了一些更好的,但仍然相当缓慢,讨厌这些崩溃。 我试过KDevelop3 ,但是这个问题中提到的function不是很先进 – 似乎只是非常先进的基于grep的文本search。 Edit4 KDevelop4 – 我试图使它工作,但最新的testing版是非常不可用的自定义生成文件项目,我无法做任何事情。 Edit5 我很惊讶,但是QT Creator在我的testing中做得非常好。 它似乎没有创build一些标签/索引文件,但不知何故设法非常精确地显示variables/函数/类的用法。 不幸的是,当遵循函数的定义时,它似乎不能很好地与模板一起工作。 没有一个提到的IDE可以与Visual SlickEdit竞争参考,虚拟function等.QT Creator是最接近的,所以我会select它作为我的问题的答案。

Android中的USB Dongle识别 – Beaglebone

问题 : 部分华为USB Dongle在Beaglebone中未被Android JellyBean4.1.2识别。 详细 : 我正在使用Android JellyBean4.1.2上运行的BeagleBone。 Huawei – E1731 [Locked] , Huawei – E303D [Locked]在这个平台上工作正常 。 Huawei E303F , Huawei E303F (Both Factory Unlocked)都无法被OS 识别 (通讯文件未生成) 我自己做的解决方法 使用AT命令将Dongle模式更改为仅调制解调器模式 将供应商ID和产品ID添加到init.devicename.sh(强制内核识别USB Dongle) 使用VID和PID更改USB模式开关文件 现在提到的USB软件狗工作正常。 但是我想find根本原因并且必须解决它。 有没有任何select通过从源代码构buildAndroid操作系统来解决它? 如果是的话,怎么样? 哪些文件需要更改? 为什么有些软件狗直接识别没有提到的解决方法? UPDATE 正如skoperst所说,我在kernel_dir/drivers/usb/serial/option.c other than hard-coding Device VID & PID是否还有其他的解决scheme。 我需要一些更通用的解决scheme,以促进Plug & Play机制。 如何Plug & Play […]

如何从存储在char *指针中的名称调用ac函数?

我想dynamic调用一个函数的名字,例如,假设有以下函数和string: void do_fork() { printf ("Fork called.\n"); } char *pFunc = "do_fork"; 现在我需要通过*pFunc调用do_fork() 。 那可能吗? 无论是C / C ++代码欢迎,非常感谢!

在我的程序中使用OpenBSD的malloc,realloc和free

我想在我的Debian lenny桌面上使用OpenBSD的malloc,realloc和free,而不是glibc。 他们是否只是在replace:他们会在我的Linux桌面上工作? 哪些是我需要的文件,哪些OpenBSD软件包包含它们?

我们怎样才能将一个string转换为int为非常大的整数值?

我已经使用函数atoi将string转换为int ,它工作正常,但是当我给 num = atoi (argv[1]) ; // argv contain 4294967295 maximun value of 32 bit integer 它给我2147483647答案,这基本上是4294967295的一半 我想这是因为char和int的字节的差异。 任何人都可以解释什么发生在位和字节,以及如何解决它或将其转换为int

将毫秒转换为timespec – GNU移植

我想把毫秒转换成GNU(GCC)linux的timespec结构。 我已经尝试过下面的代码。 timespec GetTimeSpecValue(unsigned long milisec) { struct timespec req; //long sec = (milisecondtime /1000); time_t sec = (time_t)(milisec/1000); req->tv_sec = sec; req->tv_nsec = 0; return req; } 运行这个代码给我下面的错误。 在'GetTimeSpecValue'之前预期'=',',',';','asm'或'__attribute__' 我也在代码中包含time.h文件。

在mq_send中发送结构体

我使用的是POSIX IPC,根据文档 – http://man7.org/linux/man-pages/man3/mq_send.3.html mq_send()方法只发送char *数据,而mq_recv()只接收字符数据。 但是,我想发送一个自定义结构到我的消息队列,并在接收端,我想要的结构。 示例结构: struc Req { pid_t pid; char data[4096]; } 那么,有没有人知道如何在C lang中做到这一点?