0

我收到一个没有意义的错误。我有以下代码 -

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <grp.h>

gid_t groupIdFromName(const char *name)
{
    struct group *grp;
    gid_t g;
    char *endptr;

    if (name == NULL || *name == '\0')
        return -1;

    g = strtol(name, &endptr, 10);
    if (*endptr == '\0')
        return g;

    grp = getgrnam(name);
    if (grp == NULL)
        return -1;

    return grp->gr_gid;
}

int main(int argc, char** argv) {
  return (EXIT_SUCCESS);
}

我在 Linux Mint 中使用 NetBeans,当我尝试并且我的程序构建没有问题时,当我尝试运行它时,我收到以下错误 -

Signal received: SIGSEGV (?) with sigcode ? (?)
From process: ?

如果我注释掉这一行,grp = getgrnam(name);这个错误就会消失。但我不明白为什么这条线会导致它失败,特别是因为我的主要方法是空白的。

4

1 回答 1

0

我发现很多人在 NetBeans 和 Code::Blocks 中遇到这个错误已经有一段时间了。我在 Eclipse 中尝试了代码,它工作正常。所以不要在 Linux 上使用 NetBeans 进行 C 开发是我的建议。

于 2013-04-02T15:13:41.843 回答