この時点でテスト プログラムを作成してベースをダウンさせていますが、これを実行すると、ゴミの値が構造体に送られます。
これが少し不完全な場合は申し訳ありませんが、私はこれで作業しており、何時間もネットを検索しており、私が行っていることはすべて正しいようですが、 pthread_create 関数を介してそれらを渡すときに、いくつかの重要な値にガベージが挿入されています.
助けてくれてありがとう!
このコードは私に次の出力を与えています:
メイン機能実行中!
gWorkerid の初期セット = 0
ワーカー ID = 319534848
ハウディ・ドゥーディ!
睡眠を終了する
gWorkerid はトラッシュ値 = -946297088 になりました
私は期待している:
メイン機能実行中!
gWorkerid の初期セット = 0
ワーカー ID = 0
ハウディ・ドゥーディ!
睡眠を終了する
gWorkerid はゴミ値 = 0 になりました
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <pthread.h>
#define MAX_CONN 3
#define MAX_LINE 1000
typedef struct worker_t
{
int id;
int connection;
pthread_t thread;
int used;
}WORKER_T;
struct sockaddr_in gServ_addr;
WORKER_T gWorker[MAX_CONN];
char sendBuff[1025];
// Thread function
void * worker_proc(void *arg)
{
WORKER_T *me = (WORKER_T*) arg;
printf("Howdy Doody!\n");
return NULL;
}
int main(int argc, char *argv[])
{
printf("main function running!\n");
pthread_t threadTest;
int i = 0;
gWorker[i].id = i;
printf("initial set of gWorkerid = %d\n", gWorker[i].id);
gWorker[i].connection = i;
gWorker[i].used = 1;
pthread_create(&gWorker[i], NULL, worker_proc, &gWorker[i]);
sleep(1);
printf("end sleep\n");
printf("gWorkerid is now trash value = %d\n", gWorker[i].id);
return 0;
}