下面是我的代碼。我試圖讓main_thread
獲得用戶輸入,存儲在global_variable
中,然後打印出來。但是,獲得輸入後,我的打印輸出是分段錯誤。任何人有任何想法?C編程pthread打印分段錯誤
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
char* global_variable;
void *first_thread(void *ptr) {
printf("%s \n", (char *)ptr);
pthread_exit(NULL);
}
void *second_thread(void *ptr) {
printf("%s \n", (char *)ptr);
pthread_exit(NULL);
}
void *third_thread(void *ptr) {
printf("%s \n", (char *)ptr);
pthread_exit(NULL);
}
void *main_thread() {
printf("Thread 1: Please enter a line of text [Enter \"Exit\" to quit]\n");
fgets(global_variable, 999, stdin);
printf("%s", global_variable);
pthread_exit(NULL);
}
int main() {
pthread_t t_m, t1, t2, t3;
//const char *m1 = "Thread 1", *m2 = "Thread 1", *m3 = "Thread 3";
int cr1, cr2;
//creating threads
cr1 = pthread_create(&t_m, NULL, main_thread, NULL);
//cr1 = pthread_create(&t1, NULL, first_thread, NULL);
//cr1 = pthread_create(&t2, NULL, second_thread, NULL);
//cr1 = pthread_create(&t3, NULL, third_thread, NULL);
//threads created
pthread_join(t_m, NULL);
printf("Global Variable: %s", global_variable);
exit(0);
return 0;
}
我剛纔看到2-3的問題,從你在所有的代碼創建第一線爲主線,但通常是主線程是所有運行main..parent線程的線程。 –
您的評論代碼看起來不正確。 –