Может кто-нибудь объяснить мне, как работает «sigaction»? - PullRequest
1 голос
/ 29 апреля 2011

Мне трудно понять, как работает sigaction().

В <signal.h> sigaction определяется как

int sigaction(int sig, const struct sigaction *act, struct sigaction *oact)

Но sigaction также определяется в bits/sigaction.h как структура. Я запутался, можно ли сделать структуру в C вызываемой?

Может кто-нибудь дать мне краткое объяснение по этому поводу?

1 Ответ

5 голосов
/ 29 апреля 2011

Функция называется sigaction, структура называется struct sigaction. Функции и структуры существуют в разных пространствах имен в C. Это похоже на способ, которым вы можете сделать это:

#include <stdio.h>

struct x {
        int x;
};

static int
x(struct x *x) {
        return x->x;
}

int
main(void) {
        struct x y;
        /* But not "struct x x" as we want to call the "x" function below. */

        y.x = 1;
        printf("%d\n", x(&y));
        return 0;
}

И компилятор может определить, какой x какой, по различным пространствам имен. Но этот пример довольно излишний и выглядел бы немного грязно, если бы вы сделали что-то подобное в реальной жизни.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...