楼主:
proud (hc)
2015-05-29 21:06:48出现问题的code如下
if(argc==3){
if( strcmp(argv[1], "-g") == 0 ){
struct group *data;
char gp[50];
int i=0;
strcpy(gp, argv[2] );
data = getgrnam("gp");
If(data != NULL){
while(data -> gr_mem[i]){
printf("%s\n",data->gr_mem[i++]);
}
}
}
}
compiler没有问题.但想要执行这段的时候显示
Segmentation fault (core dumped)
我试过把strcpy这行改成strncpy(gp, argv[2],10 );
但还是一样
想请问是哪里出了错误?
作者:
dracb (伊达政宗)
2015-05-29 21:08:00argc==3?
楼主:
proud (hc)
2015-05-29 21:12:00改过了, 但执行时还是出现Segmentation fault (core dumped
getgrnam 可能回传NULL没检查就拿去while 可能爆炸
er...都会用linux sdk了,请尽量跟gdb混熟一点喔(汗不然你以后的梦靥保证无穷无尽
作者:
WYchuang (爱赖床的黄金猎犬)
2015-05-30 01:27:00你的data -> gr_mem 有多长? while怎么知道要停在哪照你的写法while会跑到超过gr_mem 长度 然后就seg fault
作者:
tinlans ( )
2015-05-30 05:03:00...............为什么不用 gdb?
gr_mem没问题 请先去看struct group的定义
第七行data = getgrnam("gp"); 不用加引号吧?你想传入的应该是argv[2]而不是"gp"这个词?
gdb your_process core_file