gpt4 book ai didi

c - 运行时错误 - POSIX 线程

转载 作者:太空宇宙 更新时间:2023-11-04 06:37:40 25 4
gpt4 key购买 nike

我正在尝试使用 pthread 库创建线程。编译很好 gcc -o -pthread 文件 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);
}

最佳答案

请打开并仔细检查编译器的警告。

您不包括 stdlib.h , 所以 atoi未声明,你不是returnrunner 获取任何信息但你已经声明它返回一个 void* .

但主要问题是这一行:

if (atoi(argv[1] < 0))

argv[1] < 0将评估为 01 ,这不是您想要作为 atoi 的参数的内容.你想要的是:

if (atoi(argv[1]) < 0)

如果启用了正确的警告,您的编译器很可能会指出所有这些问题。

关于c - 运行时错误 - POSIX 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12871856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com