- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
自从我偶然发现这个问题以来,没有任何答案here ,我决定针对我的情况寻求帮助。
我想制作一个简单的 RPC 服务器-客户端,其中包含三个操作:
所以我制作了 .x 文件,并生成了我需要的代码框架。
struct X_arr
{
int X <100>;
int X_size;
};
struct max_min
{
int max;
int min;
};
struct X_times_r
{
int X <100>;
int X_size;
float r;
};
struct prod
{
float prod <100>;
};
program DUM_PROG
{
version DUM_VERS
{
float average(X_arr)=1;
max_min max_and_min(X_arr)=2;
prod product(X_times_r)=3;
}=1;
}=0x23451111;
然后我修复了服务器的 3 个远程过程,并使用一个简单的硬编码数组测试了我的客户端,效果很好(尽管我猜有时会出现一些参数无法编码
错误)。
但后来我尝试为客户端制作一个菜单,询问 X[] 的长度并获取每个所需操作的元素:
...
int i;
int flag=1;
int n;
int r;
int choice;
printf("--------------------------------------------------------------------------\n");
do
{
printf("==========================\n");
printf("=====Dummy Operations=====\n");
printf("==========================\n");
printf("1. average of X[] \n");
printf("2. max & min of X[] \n");
printf("3. r*X[] \n");
printf("4. Exit \n");
printf("==========================\n");
printf("Choice: ");
scanf("%d", &choice);
printf("==========================\n");
if(choice==1)
{
///////////////////////////////////////
//average of X[]
///////////////////////////////////////
printf("Number of elements: ");
scanf("%d", &n);
average_1_arg.X.X_len=n;
average_1_arg.X_size=n;
average_1_arg.X.X_val=(int *)malloc(n*sizeof(int));
for(i=0;i<n;i++)
{
printf("X[%d] = ", i);
scanf("%d", &average_1_arg.X.X_val[i]);
}
result_1=average_1(&average_1_arg, clnt);
printf("Average of X[]: %.2f\n", *result_1);
///////////////////////////////////////
///////////////////////////////////////
}
else if(choice==2)
{
///////////////////////////////////////
//max and min of X[]
///////////////////////////////////////
printf("Number of elements: ");
scanf("%d", &n);
max_and_min_1_arg.X.X_len=n;
max_and_min_1_arg.X_size=n;
max_and_min_1_arg.X.X_val=(int *)malloc(n*sizeof(int));
for(i=0;i<n;i++)
{
printf("X[%d] = ", i);
scanf("%d", &max_and_min_1_arg.X.X_val[i]);
}
result_2=max_and_min_1(&max_and_min_1_arg, clnt);
printf("Max of X[]: %d\n", result_2->max);
printf("Min of X[]: %d\n", result_2->min);
///////////////////////////////////////
///////////////////////////////////////
}
else if(choice==3)
{
///////////////////////////////////////
//r*X[]
///////////////////////////////////////
printf("Number of elements: ");
scanf("%d", &n);
printf("r: ");
scanf("%d", &r);
product_1_arg.X.X_len=n;
product_1_arg.X_size=n;
product_1_arg.r=r;
product_1_arg.X.X_val=(int *)malloc(n*sizeof(int));
for(i=0;i<n;i++)
{
printf("X[%d] = ", i);
scanf("%d", &product_1_arg.X.X_val[i]);
}
result_3=product_1(&product_1_arg, clnt);
for(i=0;i<n;i++)
printf("%.2f*X[%d]=%.2f\n", product_1_arg.r, i, result_3->prod.prod_val[i]);
///////////////////////////////////////
///////////////////////////////////////
}
else if(choice==4)
{
flag=0;
}
else
{
printf("Invalid Choice. Terminating in 3...2...1...\n");
exit(1);
}
}while(flag);
printf("--------------------------------------------------------------------------\n");
...
hell 爆发了。更具体地说,服务器发生段错误,不久之后,客户端在没有服务器连接的情况下开始“工作”。
“段错误”让我想到了流氓指针或未初始化的变量,但在查看代码太多时间后,我没有找到任何接近的东西。我怀疑我的 .x
文件的编写方式,但我测试了它的一个更简单的版本,得到了相同的结果。
出了什么问题?
ps:repo 可以更深入地了解此内容 here
更新:我搞乱了服务器上的过程,似乎作为参数传递的几乎整个结构实际上根本没有传递任何内容,导致创建一个基于垃圾的 for 循环。
最佳答案
啊,耻辱的行走......
结果我留下了生成的 rpc 文件交给我的所有默认函数调用,之前 我制作了我的菜单并给出了我的值(value)观:
result_1 = average_1(&average_1_arg, clnt);
if (result_1 == (float *) NULL) {
clnt_perror (clnt, "call failed");
}
result_2 = max_and_min_1(&max_and_min_1_arg, clnt);
if (result_2 == (max_min *) NULL) {
clnt_perror (clnt, "call failed");
}
result_3 = product_1(&product_1_arg, clnt);
if (result_3 == (prod *) NULL) {
clnt_perror (clnt, "call failed");
}
因此,每次客户端启动时,都已经调用了所有函数,并且没有参数初始化,这确实要归功于您可怕的编码技巧。
修复了它,文字就像魅力一样。你可以自己测试一下here
关于c - RPC:段错误(核心已转储),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50544389/
我已经使用 vue-cli 两个星期了,直到今天一切正常。我在本地建立这个项目。 https://drive.google.com/open?id=0BwGw1zyyKjW7S3RYWXRaX24tQ
您好,我正在尝试使用 python 库 pytesseract 从图像中提取文本。请找到代码: from PIL import Image from pytesseract import image_
我的错误 /usr/bin/ld: errno: TLS definition in /lib/libc.so.6 section .tbss mismatches non-TLS reference
我已经训练了一个模型,我正在尝试使用 predict函数但它返回以下错误。 Error in contrasts<-(*tmp*, value = contr.funs[1 + isOF[nn]])
根据Microsoft DataConnectors的信息我想通过 this ODBC driver 创建一个从 PowerBi 到 PostgreSQL 的连接器使用直接查询。我重用了 Micros
我已经为 SoundManagement 创建了一个包,其中有一个扩展 MediaPlayer 的类。我希望全局控制这个变量。这是我的代码: package soundmanagement; impo
我在Heroku上部署了一个应用程序。我正在使用免费服务。 我经常收到以下错误消息。 PG::Error: ERROR: out of memory 如果刷新浏览器,就可以了。但是随后,它又随机发生
我正在运行 LAMP 服务器,这个 .htaccess 给我一个 500 错误。其作用是过滤关键字并重定向到相应的域名。 Options +FollowSymLinks RewriteEngine
我有两个驱动器 A 和 B。使用 python 脚本,我在“A”驱动器中创建一些文件,并运行 powerscript,该脚本以 1 秒的间隔将驱动器 A 中的所有文件复制到驱动器 B。 我在 powe
下面的函数一直返回这个错误信息。我认为可能是 double_precision 字段类型导致了这种情况,我尝试使用 CAST,但要么不是这样,要么我没有做对...帮助? 这是错误: ERROR: i
这个问题已经有答案了: Syntax error due to using a reserved word as a table or column name in MySQL (1 个回答) 已关闭
我的数据库有这个小问题。 我创建了一个表“articoli”,其中包含商品的品牌、型号和价格。 每篇文章都由一个 id (ID_ARTICOLO)` 定义,它是一个自动递增字段。 好吧,现在当我尝试插
我是新来的。我目前正在 DeVry 在线学习中级 C++ 编程。我们正在使用 C++ Primer Plus 这本书,到目前为止我一直做得很好。我的老师最近向我们扔了一个曲线球。我目前的任务是这样的:
这个问题在这里已经有了答案: What is an undefined reference/unresolved external symbol error and how do I fix it?
我的网站中有一段代码有问题;此错误仅发生在 Internet Explorer 7 中。 我没有在这里发布我所有的 HTML/CSS 标记,而是发布了网站的一个版本 here . 如您所见,我在列中有
如果尝试在 USB 设备上构建 node.js 应用程序时在我的树莓派上使用 npm 时遇到一些问题。 package.json 看起来像这样: { "name" : "node-todo",
在 Python 中,您有 None单例,在某些情况下表现得很奇怪: >>> a = None >>> type(a) >>> isinstance(a,None) Traceback (most
这是我的 build.gradle (Module:app) 文件: apply plugin: 'com.android.application' android { compileSdkV
我是 android 的新手,我的项目刚才编译和运行正常,但在我尝试实现抽屉导航后,它给了我这个错误 FAILURE: Build failed with an exception. What wen
谁能解释一下?我想我正在做一些非常愚蠢的事情,并且急切地等待着启蒙。 我得到这个输出: phpversion() == 7.2.25-1+0~20191128.32+debian8~1.gbp108
我是一名优秀的程序员,十分优秀!