当前位置:  技术问答>php安装完成后如何添加mysql扩展 iis7站长之家

用mysql c api出现段错误问题,莫名其妙!高分求解

    来源: 互联网  发布时间:2016-05-24

    本文导语:  我发现用mysql c api会有些莫名奇妙的错误,程序出现段错误后退出.应该不是程序的问题.各位有没遇到过? 程序大概这样,简化了的. void *  process_test(void *arg) {   MYSQL tspsql;   char username[25]] = {0};   char passwd[255] =...

我发现用mysql c api会有些莫名奇妙的错误,程序出现段错误后退出.应该不是程序的问题.各位有没遇到过?
程序大概这样,简化了的.

void * 
process_test(void *arg)
{
  MYSQL tspsql;
  char username[25]] = {0};
  char passwd[255] = {0};
  Pthread_detach(pthread_self());
  my_init();
  mysql_thread_init(); 
  mysql_init(&tspsql);
  mysql_options(&tspsql,MYSQL_READ_DEFAULT_GROUP,"tspserver");
  if (!mysql_real_connect(&tspsql,"localhost","test","test","test",0,NULL,0))
     perror("Failed to connect to database!");
  
/*这里是取username部分,我用了多种方式取,各种结果都是一样的。但即使这样,不同的方式取username,却会影响下面的运算.
按道理,下面是会循环执行的.但根据我的不同取username方式,有的运行到第2次,就出现段错误退出了.莫名奇妙.不知道
明白我说的吗?呵呵*/

  for(;;)
     getpasswd(&tspsql,username,passwd);
  return(NULL);
}

int getpasswd(MYSQL *tsql,const char* username,char* passwd)
{
  int plen;
  char sql[255] = {0};
  
  MYSQL_ROW row;
  MYSQL_RES *result;

  sprintf(sql,"select * from user where username = "%s" limit 1", username);
  
  if(mysql_query(tsql,sql) != 0)
    return -1;
      
  if((result = mysql_store_result(tsql)) == NULL)
    return -1;
      
  if((row = mysql_fetch_row(result)) == NULL)
    return -1;
 
  plen = strlen(row[2]);
  memcpy(passwd,row[2],plen);
  passwd[plen] = 0;
 
  mysql_free_result(result);
  
  return 0;
}

|
plen = strlen(row[2]); 
memcpy(passwd,row[2],plen); 

这里很有可能造成core

另外,少用sprintf, 一不留神,就会core

|
up先

|
如果说调用api时发生段错误,那么很可能是参数的初始化值不正确,该分配内存的没有分配、指针可能是一个实效的指针等等。

|


呵呵,这种事情也很正常,包括操作系统也这样。这也难怪,某些大型的外企公司的软件,800客服一般上来就问,版本啊、patch啊,甚至操作系统的版本也要问。

    
 
 

您可能感兴趣的文章:

  • 求助linux下mysql 求解!
  • 求解释: useradd -g mysql mysql -d /home/mysql -s /sbin/nologin
  • MySQL my.cnf 配置slow log时无日志输出求解
  • freebsd系统mysql无法启动求解
  • MyODBC连不上MySQL,高分求解
  • freebsd8.1下安装mysql4.0.26问题求解
  • 高分求教mysql 编译环境安装问题!
  • 高分求RedHat+Apache+PHP+MySQL及企业邮局配置方案
  • 哪位同盟可以我一份jsp+mysql的消息发布程序,高分赠送!
  • {高分200分}jsp访问linux上的mysql数据库,取到和插入的数据全是乱码,我是这样设置的???
  • 在线等待,三个简单问题问题(Rose , Mysql , jive)!高分相送!
  • linun 安装mysql 高分求助,急急急
  • 如何在JSP程序中连接MySql?(高分等待)
  • 高分求教redhat7.3下关于mysql的问题!(急)
  • 在linux下用C语言访问、操作mysql数据库(高分悬赏热心人!!!)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • mysql中如何查看最大连接数(max_connections)和修改最大连接数
  • 在 linux下输入"mysql"命令,进入mysql命令行,但出现“Can't connetc to local MySQL server thuough socket /var/lib/mysql/mysql.sock
  • Mysql查询错误:ERROR:no query specified原因
  • MySQL 重装MySQL后, mysql服务无法启动
  • php安装完成后如何添加mysql扩展
  • 为什么用linux安装盘安装了mysql后,启动mysql,提示找不到mysql.sock文件?
  • mysql中查询当前正在运行的SQL语句并找出mysql中运行慢的sql语句
  • 請教,在redhat linux7.2+mysql 中,系統提示mysql已啟動,網頁卻不能訪問mysql?
  • Myeclipse中自带Tomcat的JDBC连接池配置(mysql和mssql)
  • 在Linux内安装了Mysql,无法进入Mysql.
  • MySQL Workbench的下载安装与使用教程
  • 怎样在linux终端输入mysql直接进入mysql?
  • php中内置的mysql数据库连接驱动mysqlnd简介及mysqlnd的配置安装方式
  • c++中关于#include <mysql/mysql.h>的问题?
  • VS2012+MySQL+SilverLight5的MVVM开发模式介绍
  • mysql -u root mysql 怎么解释
  • MySQL索引基本知识
  • mm.mysql那里可以下载?www.mysql.com根本下载不了。谢谢了
  • Mysql设置查询条件(where)查询字段为NULL
  • MySQL集群 MySQL Cluster
  • mysql中字符串和时间互相转换的方法(自动转换及DATE_FORMAT函数)
  • MySQL存储引擎 MySQL Maria


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3