我想用pthread庫創建線程。彙編沒問題, gcc -o -pthread file file.c運行時錯誤 - POSIX線程
但是當我運行代碼時,出現了段錯誤。我不確定問題是什麼。我試圖執行教科書中給出的代碼來嘗試學習,但現在我迷失了方向。誰能幫忙?代碼如下...非常基本,是的,但請把我趕出去。
#include<stdio.h>
#include<pthread.h>
int sum;
void *runner(void *param);
int main (int argc, char *argv[])
{
pthread_t tid;
pthread_attr_t attr;
//printf("Am I here..?\n");
if (argc!=2)
{
fprintf(stderr, "usage: a.out ...\n");
return -1;
}
if (atoi(argv[1] < 0))
{
fprintf(stderr, "%d must be >= 0\n", atoi(argv[1]));
return -1;
}
pthread_attr_init(&attr);
pthread_create(&tid, &attr, runner, argv[1]);
pthread_join(tid, NULL);
printf("sum = %d\n", sum);
}
void *runner(void *param)
{
extern int sum;
int i, upper=atoi(param);
sum=0;
for(i=1; i<= upper; i++)
sum+=i;
pthread_exit(0);
}
這可能是值得學習如何使用調試器。在linux上''gdb'將是選擇的工具。在使用'gdb'後,你會在短時間內很輕鬆地發現這個錯誤。 – alk
此外,使用選項'-Wall'打開所有警告是一個好主意。在您的特定情況下,編譯器將打印的警告將直接指向您的關鍵代碼行。試試吧.. ;-) – alk