繁体   English   中英

导致分段错误的Pthread_create(C ++,Kubutnu 15)

[英]Pthread_create causing segmentation fault (C++, Kubutnu 15)

老实说,我感到震惊和困惑。 在阅读了有关“引起分段错误的pthread_create”的几十个主题之后,我仍然遇到这个问题。 我完成了所有已订购的工作,结果为零:在调试阶段,程序在行创建过程中出现了分段错误。

我已经什么都不懂了。 谢谢您的帮助。 提前致谢。

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>

#include <unistd.h>
#include <pthread.h>
#include <interfacemanager.h>
using namespace std;

InterfaceManager IFACE;



void* watch_for_interfaces(void*)
{
    IFACE.monitoring();
}



int main()
{

        sigset_t   *set;
        sigemptyset(&(*set));
        sigaddset(&(*set), SIGINT);
        sigaddset(&(*set), SIGTERM);

        pthread_t th1, th2;
        int i=1;
        if (pthread_create(&th2, NULL, watch_for_interfaces, (void*)&i) != 0) {
          perror("th2 error\n");
          exit(1);
        }




        printf ("Terminating\nPress eny key\n");
        getchar();

        exit(EXIT_SUCCESS);

        return 0;
    }

问题不在于pthread_create而在于信号函数。

    sigset_t   *set;
    sigemptyset(&(*set));
    sigaddset(&(*set), SIGINT);
    sigaddset(&(*set), SIGTERM);

在这里,您使用的是未初始化的变量set ,并将其传递给undefined的信号函数。 您可以malloc它,但有必要将其编写为

    sigset_t   set;
    sigemptyset(&set);
    sigaddset(&set, SIGINT);
    sigaddset(&set, SIGTERM);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM