请考虑以下代码片段:
#include <stdio.h>
#include <unistd.h>
#include <sys/mman.h>
#include <fcntl.h>
int fd = open( "/path/to/existing/file/or/device", O_RDONLY);
int numberOfWords = 4096; // chosen to be smaller than file size
int* data = mmap( NULL, nomberOfWords * sizeof(int), PROT_READ, MAP_SHARED, fd, 0);
if (data != MAP_FAILED) {
printf( "%d\n", data[0]);
// oops, forgot to munmap
close(fd);
printf( "%d\n", data[0]); // <-- why doesn't this segfault
}
Run Code Online (Sandbox Code Playgroud)
我正在使用ioctl()用于设置DMA 的自定义内核驱动程序,并最终需要用户空间mmap()来访问特定缓冲区.
在开发单元测试时,我偶然发现在没有munmap先调用的情况下关闭文件描述符后,仍然可以使用mmap指针访问用户空间中的缓冲区内存.想到驱动程序中有一些错误我编写了一个类似于此处所示的小程序,用一个"普通"文件来运行mmap().
我期待看到的是关闭后读取的段错误,我的想法是,munmap()当打开文件描述符的使用被关闭时,内核将自动与文件描述符关联的页面,类似于进程时的情况被终止.
相反,我能够继续使用指针.这有点令人惊讶,因为我已经使用mmap()了几年,我一定很聪明(更可能是幸运的)足以避免可能暴露这种情况的错误.mmap …
我正在尝试将架构pwm.schema添加到ldap并获得以下错误.
命令:
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/pwm.schema
Run Code Online (Sandbox Code Playgroud)
输出:
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
ldapadd: invalid format (line 1) entry: ""
Run Code Online (Sandbox Code Playgroud)
文件内容如下:
attributetype ( 1.3.6.1.4.1.591242.2.2010.04.16.1 NAME 'pwmEventLog'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )
attributetype ( 1.3.6.1.4.1.591242.2.2010.04.16.2 NAME 'pwmResponseSet'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )
attributetype ( 1.3.6.1.4.1.591242.2.2010.04.16.3 NAME 'pwmLastPwdUpdate'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )
attributetype ( 1.3.6.1.4.1.591242.2.2010.04.16.4 NAME 'pwmGUID'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
objectclass ( 1.3.6.1.4.1.591242.1.2010.04.16.1 NAME 'pwmUser'
AUXILIARY
MAY ( dstPwdUpdate $ pwmEventLog $ pwmResponseSet $ pwmGUID
))
Run Code Online (Sandbox Code Playgroud) 如何在嵌入式Linux机器上运行valgrind来查找主软件中的内存泄漏?
在rcS脚本中,我运行如下:
./main_app
Run Code Online (Sandbox Code Playgroud)
如何将./main_app程序与valgrind联系起来?main_app进程永远不会终止.
我想不断将数据记录到文件中.此外,我想访问日志文件而不终止该main_app过程.我可以做telnet并可以访问日志文件.但问题是,除非处理程序关闭,我怎么能打开文件,即我不太明白哪个valgrind参数控制如何将内存泄漏记录到文件中.请帮忙!