pthread ライブラリでスレッドを作成しようとしています。コンパイルは gcc -o -pthread file file.c で問題ありません
しかし、コードを実行すると、セグメンテーション違反が発生します。何が問題なのかわかりません。教科書に載っているコードを実行して学習しようとしましたが、今迷っています。誰でも助けることができますか?コードは以下のとおりです...非常に基本的なものですが、はい、助けてください。
#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);
}