Moin Zusammen,
ich habe zwei Fragen. Meine erste Frage bezieht sich auf Arrays und
Zeiger.
Sind folgende beide Codeabschnitte identisch?
1 | #define MAX_EVENTS 100
|
2 | struct epoll_event *events;
|
3 | events = malloc (sizeof (struct epoll_event) * MAX_EVENTS);
|
1 | #define MAX_EVENTS 100
|
2 | struct epoll_event events[MAX_EVENTS];
|
Und meine zweite Frage bezieht sich auf folgenden Abschnitt:
1 | int n = epoll_wait (epollfd, events , num_events, -1 );
|
2 | for (int i = 0; i < n; ++i) {
|
3 | if (events[i].data.fd == timerfd) {
|
4 | read(....);
|
5 | printf ("Timer %....");
|
6 | }
|
7 | else (events[i].data.fd == signalfdfd){
|
8 | read();
|
9 | }
|
10 | }
|
Ich würde gerne den if/else Block komplett rausstreichen und statt
dessen mit zwei Callbackfunktionen für timer und signal arbeiten. Leider
weiß ich nicht, wie ich das am besten umsetzen könnte. Eventuell hat
jemand einen Ansatz, möglicherweise über den freien pointer
events.data.ptr oder ähnliches.