Форум программистов, компьютерный форум, киберфорум
С под Linux
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
52 / 50 / 8
Регистрация: 10.01.2012
Сообщений: 459
1

#include <bits/siginfo.h> отсутствует в Debian 10

18.01.2021, 10:37. Просмотров 1344. Ответов 7
Метки нет (Все метки)

Обновился с дебиана семерки на десятку, поднял NetBeans 12, попробовал компилить сишные проекты и сразу нарвался на
In file included from DAEMON/MonitorProc.c:25: DAEMON/daemon.h:39:10: fatal error: bits/siginfo.h: Нет такого файла или каталога.
#include <bits/siginfo.h>
^~~~~~~~~~~~~~~~
compilation terminated.
libc6-dev есть, но зайдя в /usr/include/bits, я не нашел siginfo.h.
есть другие siginfo-* , но просто siginfo.h. НЕТ.

Что делать? Как сражаться?

Или (мля) все проекты перересовывать под что то иное? - Тогда что?где?когда?как?инафигатакоетворить?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.01.2021, 10:37
Ответы с готовыми решениями:

Работа с файлами в C# с исп. библиотек #include <stdio.h> #include <stdlib.h> #include <math.h> #include <io.h>
В типизированном файле записаны названия городов и их численность. Увеличить численность каждого...

Отсутствует wi-fi подключение Debian/Linux
Здравствуйте! 4 дня назад я решился установить linux на нетбук acer aspire 722. Имею дело с linux...

#include<iostream>// подключение библиотек #include <conio.h> #include <climits>
помогите для этой программы сделать блок-схему. Пожалуйста #include&lt;iostream&gt;// подключение...

Чем отличается #include <cstring>, #include <string> и #include <string.h>?
Доброго времени суток :) Пишу свой класс и мне для нужны функции для работы со строками. Когда...

7
Почетный модератор
11165 / 4124 / 410
Регистрация: 12.06.2008
Сообщений: 11,942
18.01.2021, 11:53 2
А для чего вы его подключаете? Скорее всего, его напрямую подключать не надо, описание его структур станут доступны при подключении других хедеров. Например, signal.h
Сравниваю содержимое этого файла (нашёл в интернете) со директорией include на своём компьютере... у меня тоже этого файла нет, а его содержимое разбросано по другим файлам. Но все эти файлы подключаются внутри signal.h
1
52 / 50 / 8
Регистрация: 10.01.2012
Сообщений: 459
18.01.2021, 15:00  [ТС] 3
Попробую. Но зараза, во многих проектах и многих местах заюзано именно так - напрямую. Пилить не перепилить.

Добавлено через 27 минут
Не получается во многих местах капризка проявилась

Например тут

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#include <features.h>
#include <signal.h>
#include <bits/sigaction.h>
#include <sys/select.h>
#include "daemon.h"
#include "../LIB/debug.h"
#include "../LIB/macros.h"
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
/**
 @brief   Function: WorkProc
 * 
 * 
  @detailed   Synopsis: 
 
 @code
 @endcode
 
 @param На вход подается 
 @return Возвращяет или 0 или ошибку
 */
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
sigset_t sigset;
siginfo_t siginfo;
 
int sigemptyset(sigset_t *__set);
int sigaddset(sigset_t *__set, int __signo);
int sigprocmask(int __how, const sigset_t * __restrict __set, sigset_t * __restrict __oset);
int sigwaitinfo(const sigset_t * __restrict __set, siginfo_t * __restrict __info);
int sigaction(int __sig, const struct sigaction * __restrict __act, struct sigaction * __restrict __oact);
int sigwait(const sigset_t * __restrict __set, int *__restrict __sig);
 
int WorkProc()
{
#if (defined CONTROL)
    printf("\n \n Работает библиотека WorkProc.c \n");
    debug(" \n |-> !!!!!!!!!!! Выполняется функция  WorkProc.c !!!!!!!!!!!!!!!\n");
    char* timeval;
    struct timeval s_WorkProc_time; // start time
    struct timeval e_WorkProc_time; // end time 
    bzero(&s_WorkProc_time, sizeof (timeval));
    bzero(&e_WorkProc_time, sizeof (timeval));
    gettimeofday(&s_WorkProc_time, NULL); // save start time point
#endif
    //  printf("\n \n Работает библиотека WorkProc.c \n");
    /* !!!!!!!!!!!!!!!!!!!!!!!!!!! FUNCTION BODY !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
    struct sigaction sigact;
    //  sigset_t sigset;
    int signo;
    int status;
    char *logMessage;
 
    // сигналы об ошибках в программе будут обрататывать более тщательно
    // указываем что хотим получать расширенную информацию об ошибках
    sigact.sa_flags = SA_SIGINFO;
    // задаем функцию обработчик сигналов
 
    sigact.sa_handler = (void*) signal_error;
 
    sigemptyset(&sigact.sa_mask);
 
    // установим наш обработчик на сигналы
 
    sigaction(SIGFPE, &sigact, 0); // ошибка FPU
    sigaction(SIGILL, &sigact, 0); // ошибочная инструкция
    sigaction(SIGSEGV, &sigact, 0); // ошибка доступа к памяти
    sigaction(SIGBUS, &sigact, 0); // ошибка шины, при обращении к физической памяти
 
    sigemptyset(&sigset);
 
    // блокируем сигналы которые будем ожидать
    // сигнал остановки процесса пользователем
    sigaddset(&sigset, SIGQUIT);
 
    // сигнал для остановки процесса пользователем с терминала
    sigaddset(&sigset, SIGINT);
 
    // сигнал запроса завершения процесса
    sigaddset(&sigset, SIGTERM);
 
    // пользовательский сигнал который мы будем использовать для обновления конфига
    sigaddset(&sigset, SIGUSR1);
    sigprocmask(SIG_BLOCK, &sigset, NULL);
 
    // Установим максимальное кол-во дискрипторов которое можно открыть
    SetFdLimit(FD_LIMIT);
 
    // запишем в лог, что наш демон стартовал
 
    logMessage = malloc(strsize("[%s DAEMON] Started\n", DAEMON_NAME));
    sprintf(logMessage, "[%s DAEMON] Started\n", DAEMON_NAME);
    WriteLog(logMessage);
    free(logMessage);
 
    // запускаем все рабочие потоки
    status = InitWorkThread();
    if (!status)
    {
        // цикл ожижания сообщений
        for (;;)
        {
            // ждем указанных сообщений
            sigwait(&sigset, &signo);
 
            // если то сообщение обновления конфига
            if (signo == SIGUSR1)
            {
                // обновим конфиг
                status = ReloadConfig();
                if (status == 0)
                {
                    logMessage = malloc(strsize("[%s DAEMON] Reload config failed\n", DAEMON_NAME));
                    sprintf(logMessage, "[%s DAEMON] Reload config failed\n", DAEMON_NAME);
                    WriteLog(logMessage);
                    free(logMessage);
                }
                else
                {
                    logMessage = malloc(strsize("[%s DAEMON] Reload config OK\n", DAEMON_NAME));
                    sprintf(logMessage, "[%s DAEMON] Reload config OK\n", DAEMON_NAME);
                    WriteLog(logMessage);
                    free(logMessage);
                }
            }
            else // если какой-либо другой сигнал, то выйдим из цикла
            {
                break;
            }
        }
 
        // остановим все рабочеи потоки и корректно закроем всё что надо
        DestroyWorkThread();
    }
    else
    {
        logMessage = malloc(strsize("[%s DAEMON] Create work thread failed\n", DAEMON_NAME));
        sprintf(logMessage, "[%s DAEMON] Create work thread failed\n", DAEMON_NAME);
        WriteLog(logMessage);
        free(logMessage);
    }
 
    logMessage = malloc(strsize("[%s DAEMON] Stopped\n", DAEMON_NAME));
    sprintf(logMessage, "[%s DAEMON] Stopped\n", DAEMON_NAME);
    WriteLog(logMessage);
    free(logMessage);
 
    /* !!!!!!!!!!!!!!!!!!!!!!!!!!! FUNCTION BODY END !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
#if (defined CONTROL)
    gettimeofday(&e_WorkProc_time, NULL); // save end time point
    printf("Running function in  WorkProc.c takes 0.%.6d second\n", e_WorkProc_time.tv_usec - s_WorkProc_time.tv_usec);
    debug("Функция библиотеки WorkProc.c работу закончила|->\n \n");
#endif
    // вернем код не требующим перезапуска
    return CHILD_NEED_TERMINATE;
}
Где #include "daemon.h" есть
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#ifndef DAEMON_H
#define DAEMON_H
 
#ifdef __cplusplus
extern "C" {
#endif
 
 
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/file.h>
#include <signal.h>
#include <execinfo.h>
#include <unistd.h>
#include <errno.h>
#include <wait.h>    
#include <bits/siginfo.h>
#define DAEMON_NAME "atda-bot"
#define PID_FILE_SERVER "/usr/share/call-taxi/ATDA/atda-bot-server.pid"
#define PID_FILE_DAEMON "/usr/share/call-taxi/ATDA/atda-bot-monitor.pid"
#define ATDA_LOGFILE_DIR "/usr/share/call-taxi/ATDA"
#define ATDA_LOGFILE_NAME "atda.log"
 
#define FD_LIMIT   1024*10
 
 
#define CHILD_NEED_WORK                 1
#define CHILD_NEED_TERMINATE    2
 
 
    int nice(int __inc);
    int getdtablesize(void);
    int initgroups(const char *__user, __gid_t __group);
    int chroot(const char *__path) __THROW __nonnull((1));
 
 
    __mode_t umask(__mode_t __mask) __THROW;
#include <sys/stat.h>
#include <signal.h>
 
 
 
    char *strsignal(int __sig);
 
 
 
 
 
    int remove_pid(char *pidfile);
    int start_daemon();
    int DestroyWorkThread();
    int InitWorkThread();
    int LoadConfig(char* FileName);
    int MonitorProc();
    int ReloadConfig();
    int SetFdLimit(int MaxFd);
    int SetPidFile(char* Filename);
    int SetDaemonPidFile(char* Filename);
    int WorkProc();
    int WriteLog(char * message);
    int tcp_ip_bot(int argc, char** argv);
    int ws_main(int argc, char **argv);
    void signal_error(int sig, siginfo_t *si, void *ptr);
 
#ifdef __cplusplus
}
#endif
 
#endif /* DAEMON_H */
0
фрилансер
1796 / 1354 / 349
Регистрация: 11.10.2019
Сообщений: 3,965
18.01.2021, 15:44 4
zoleg, как насчёт варианта создать в проекте папку bits и в ней - этот файл, а в файле прописать нужный инклуд. Путь к папке добавить в список путей проекта, чтобы в треугольных скобках компилятор мог найти

Потом, конечно, лучше вычистить. Но работоспособность проверить так можно
1
52 / 50 / 8
Регистрация: 10.01.2012
Сообщений: 459
18.01.2021, 17:05  [ТС] 5
Неа!

C
1
2
3
4
5
6
7
8
9
10
DAEMON/MonitorProc.c:50:52: error: unknown type name ‘siginfo_t’; did you mean ‘ino_t’?
 int sigwaitinfo(const sigset_t * __restrict __set, siginfo_t * __restrict __info);
                                                    ^~~~~~~~~
                                                    ino_t
DAEMON/MonitorProc.c: In function ‘MonitorProc’:
DAEMON/MonitorProc.c:141:13: warning: implicit declaration of function ‘sigwaitinfo’ [-Wimplicit-function-declaration]
             sigwaitinfo(&sigset, &siginfo);
             ^~~~~~~~~~~
DAEMON/MonitorProc.c:144:24: error: request for member ‘si_signo’ in something not a structure or union
             if (siginfo.si_signo == SIGCHLD)
Добавлено через 32 минуты
Еще есть очень неприятная штучка - в родном хедере не находит объяву
In file included from DAEMON/WorkProc.c:23:
/usr/include/x86_64-linux-gnu/bits/sigaction.h:46:5: error: unknown type name ‘__sigset_t’
__sigset_t sa_mask;
^~~~~~~~~~
DAEMON/WorkProc.c: In function ‘WorkProc’:
DAEMON/WorkProc.c:80:17: warning: passing argument 1 of ‘sigemptyset’ from incompatible pointer type [-Wincompatible-pointer-types]
sigemptyset(&sigact.sa_mask);
^~~~~~~~~~~~~~~
DAEMON/WorkProc.c:46:27: note: expected ‘sigset_t *’ {aka ‘struct <anonymous> *’} but argument is of type ‘int *’
0
Почетный модератор
11165 / 4124 / 410
Регистрация: 12.06.2008
Сообщений: 11,942
18.01.2021, 23:10 6
Лучший ответ Сообщение было отмечено zoleg как решение

Решение

В
Bash
1
man sigwaitinfo
написано, что требуется макрос _POSIX_C_SOURCE >= 199309L
Попробуйте вначале сишника (перед инклудами) добавить
C
1
#define _POSIX_C_SOURCE 199309L
1
52 / 50 / 8
Регистрация: 10.01.2012
Сообщений: 459
19.01.2021, 00:00  [ТС] 7
Цитата Сообщение от Humanoid Посмотреть сообщение
#define _POSIX_C_SOURCE 199309L
Похоже чёт проскочило правильное,однако, глюкнуло, но по другому поводу, и хочется баиньки. Поутрне попробую компилю запустить еще раз. Спасибо!
0
52 / 50 / 8
Регистрация: 10.01.2012
Сообщений: 459
19.01.2021, 10:03  [ТС] 8
Цитата Сообщение от Humanoid Посмотреть сообщение
написано, что требуется макрос _POSIX_C_SOURCE >= 199309L
Попробуйте вначале сишника (перед инклудами) добавить
Спасибо мил человек! Оно не только собралось, но к тому же заработало!!
По дороге перерисовал инклуды с mysql -> mariadb, и настало счастье!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.01.2021, 10:03

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Warning: include(1) [function.include]: failed to open stream: No such file or directory in
Выдает вот такую ошибку Warning: include(1) : failed to open stream: No such file or directory...

Что лучше debian x86 или Debian x64
Всем добрый день посоветуйте какую x битную ос установить для следующей характеристики. QuadCore...

Warning: include(templates.php) [function.include]: failed to open stream: No such file or directory
Как исправить ошибку, этот текст выдает на главной странице

В чем суть директив #include <Windows.h> #include <stdlib.h>
/*хочу сделать простую графическую программу ранее работал с turbo 3.0 я так понимаю &lt;graphics.h&gt;...

Warning: include(Z:/home/localhost/www/layout/header.php) [function.include]: failed to open stream: No such f
Столкнулся с такой проблемой не инклудится файл include $g_site_root.'/layout/header.php';?&gt;,пишет...

Не находит #include<iomanip.h> #include<conio.h>
Само задание: Услуги телефонной сети оплачиваются по следующему правилу: за разговоры до A минут в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.