当前位置: 技术问答>linux和unix
我这有一段linux 下ftp 的客户端代码,但是运行时说有段错误, 实在搞不清,拜托帮一下忙。
来源: 互联网 发布时间:2016-03-28
本文导语: 运行后总是 Segmentation fault #include #include #include #include #include #include #include #include #include #define TRUE 1 #define dataLen 1024 char user_cmd[10],cmd_arg[20]; char buf[dataLen]; void cmd_pwd(int sock,int sockmsg); void cmd_dir...
运行后总是 Segmentation fault
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define TRUE 1
#define dataLen 1024
char user_cmd[10],cmd_arg[20];
char buf[dataLen];
void cmd_pwd(int sock,int sockmsg);
void cmd_dir(int sock,int sockmsg);
void cmd_cd(int sock,int sockmsg,char *dirName);
void cmd_cdback(int sock,int sockmsg);
void cmd_help(int sock,int sockmsg);
void cmd_get(int sock,int sockmsg,char *fileName);
void cmd_put(int sock,int sockmsg,char *fileName);
void cmd_quit(int sock,int sockmsg);
int main(int argc,char *argv[])
{
int cmd_len,arg_len;
int sock, sockmsg;
struct sockaddr_in server, servermsg;
struct hostent *hp;
sock=socket(AF_INET,SOCK_STREAM,0);
sockmsg=socket(AF_INET,SOCK_STREAM,0);
if (sockh_length);
servermsg.sin_family=AF_INET;
servermsg.sin_port=htons(atoi(argv[2])+1);
memcpy((char*)&servermsg.sin_addr, (char*)hp->h_addr, hp->h_length);
if (connect(sock,(struct sockaddr *)&server,sizeof server)dataLen)
{
read(fd,buf,dataLen);
write(sock,buf,dataLen);
fileSize=fileSize-dataLen;
}
read(fd,buf,fileSize);
write(sock,buf,fileSize);
close(fd);
printf("upload completedn");
}
else
{
printf("open file %s failedn",filePath);
}
}
|
你是怎么运行的?
回复内容太短了!
回复内容太短了!
|
debug一下,,
找到是什么地方出的错,,
我遇到过这样的问题。。
找到是什么地方出的错,,
我遇到过这样的问题。。
|
首先你要找到断错误的地方,大部分都是没有分配内存空间,引用地址错误引起的!
|
struct hostent *hp
hp没有非配内存空间
hp没有非配内存空间
|
把ulimit -c unlimited打开。出现Segmentation fault的时候会生成core文件的,然后用gdb打开看一下,具体是哪里报错。