【发布时间】:2019-04-13 22:47:31
【问题描述】:
我正在尝试学习如何从线程返回一些值,但我没有成功。我在我的代码中考虑到我不能返回一个全局变量,所以我从malloc 获取内存,但我在pthread_join 中显然有问题。
#include<stdio.h>
#include<stdlib.h>
#include <pthread.h>
struct DIRECCION{
char street [20];
int number;
} ;
struct DIRECCION * pd = NULL;
void* show(void* dm){
struct DIRECCION * di = (void*)dm;
pd=(struct DIRECCION*)malloc(sizeof(struct DIRECCION));
printf("\nHilo show\n");
printf("Calle: %s\t",di->street);
printf("Altura: %d\n",di->number);
printf("Calle: ");
scanf("%s",pd->street);
printf("Altura: ");
scanf("%d",&(pd->number));
printf("me jui\n");
return((void*)pd);
}
int main (void){
pthread_t s_id;
struct DIRECCION dm;
struct DIRECCION d ;
printf("\nProceso\n");
printf("Calle: ");
scanf("%s",dm.street);
printf("Altura: ");
scanf("%d",&(dm.number));
pthread_create( &s_id , NULL, (void*)&show, (void*)&dm);
pthread_join( s_id , (void*)&d );
printf("Calle: %s\t",(d.street));
printf("Altura: %d\n",(d.number));
free(pd);
return 0;
}
【问题讨论】:
-
欢迎来到 StackOverflow!请务必使用tour 并访问help center。你能解释一下你有什么样的“问题”吗?发布您获得的错误消息和输出,以及它们与预期的不同之处。
-
谢谢,当我从 main 打印时,线程返回的结构不是我在线程中写的
-
很高兴看到您有这么多答案。未来问题的注释:任何重要信息都应该在问题中,而不是在评论中。