我编写了简单的 pro*c 程序来检查数据库连接。代码是:
int main()
{
char *conn_string = "IDA/IDA@DBISPSS";
int x = 10;
printf("value of x is before db connection %d\n",x);
printf(" conn_string %s \n",conn_string);
EXEC SQL CONNECT :conn_string;
EXEC SQL SELECT 1 INTO :x FROM DUAL;
printf("value of x is %d\n",x);
return 0;
}
按照我执行的命令创建 pro*c 代码的可执行文件(test_connection)
proc test_connection.pc
cc -I${ORACLE_HOME}/precomp/public -c test_connection.c
cc test_connection.o -o test_connection -L$ORACLE_HOME/lib -lclntsh
当我执行 test_connection exe 时,输出是
value of x is before db connection 10
conn_string IDA/IDA@DBISPSS
Segmentation fault
但是相同的代码在另一台 linux 机器和 solaris 机器上运行良好。
为什么会抛出分段错误?