读取/proc/pid/maps时出现分段错误
我试图逐行阅读读取/proc/pid/maps时出现分段错误,c,segmentation-fault,C,Segmentation Fault,我试图逐行阅读地图但我得到了错误核心分段错误错误。。。有人能给我一些关于我的代码的建议吗?我使用的是3.13.0-32-generic int main() { char buf[512]; FILE *f; sprintf(buf, "/proc/%d/maps", getpid()); f = fopen(buf, "rt"); while (fgets(buf, 512, f)) { unsigned int from, to, pg
地图
但我得到了错误核心分段错误
错误。。。有人能给我一些关于我的代码的建议吗?我使用的是3.13.0-32-generic
int main()
{
char buf[512];
FILE *f;
sprintf(buf, "/proc/%d/maps", getpid());
f = fopen(buf, "rt");
while (fgets(buf, 512, f)) {
unsigned int from, to, pgoff, major, minor;
unsigned long ino;
char flags[4];
int ret = sscanf(buf, "%x-%x %c%c%c%c %x %x:%x %lu ", &from, &to, flags[0],flags[1],flags[2],flags[3], &pgoff, &major, &minor,ino);
if (ret != 10)
break;
}
}
您需要将指针传递给
标志
数组的成员,而不是直接传递它们,这同样适用于ino
参数:
sscanf(buf, "%x-%x %c%c%c%c %x %x:%x %lu ", &from, &to,
&flags[0], &flags[1], &flags[2], &flags[3],
&pgoff, &major, &minor, &ino);
或者,一次扫描所有字符:
sscanf(buf, "%x-%x %4c %x %x:%x %lu ", &from, &to,
flags, &pgoff, &major, &minor, &ino);
请注意
标记
之前缺少的&
,因为数组在传递给函数时会自动转换为指向其第一个元素的指针。您需要将指针传递给标记
数组的成员,而不是直接传递它们,这同样适用于ino
参数:
sscanf(buf, "%x-%x %c%c%c%c %x %x:%x %lu ", &from, &to,
&flags[0], &flags[1], &flags[2], &flags[3],
&pgoff, &major, &minor, &ino);
或者,一次扫描所有字符:
sscanf(buf, "%x-%x %4c %x %x:%x %lu ", &from, &to,
flags, &pgoff, &major, &minor, &ino);
请注意
标记
之前缺少的&
,因为数组在传递给函数时会自动转换为指向其第一个元素的指针。在scanf调用replace中
flags[x]
借
scanf调用replace中的
ino
也是如此
flags[x]
借
同样适用于
ino
谢谢你的回复…我已经纠正了这个问题,但错误仍然存在…我认为同样适用于ino
谢谢你的回复…我已经纠正了这个问题,但是错误依然存在……我认为,ino
也是如此,如果您使用gcc-Wall-Wextra-g
进行编译,您可能会收到警告,您也可能自己进行了调试。谁投票关闭了此功能?这个问题包含一个错误描述和一个最小的自包含示例,您还需要什么?如果您使用gcc-Wall-Wextra-g
编译,您将收到警告,并且您可以自己调试。谁投票关闭此问题?问题包含一个错误描述和一个最小的自包含示例,您还需要什么?