У меня странная проблема со сборкой.
У меня есть простая тестовая программа, которая отправляет sigqueue другому процессу.
Этот небольшой пример кода собирается и запускается, когда я собираю его как программу на c ++ (скомпилированную с g ++)
но когда я компилирую его как программу на c (с gcc), я получаю ошибку, что он не может найти структуру sigval.
Краткий пример:
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
#include <sys/types.h>
int main(int argc, char *argv[])
{
sigval value;
value.sival_int = 123;
sigqueue(0,SIGUSR1, value);
}
Обратите внимание, что я заменил pid на 0, чтобы упростить этот вопрос.
И если я скомпилирую с помощью gcc, я получу это:
$> gcc sigusr1_mini.c
sigusr1_mini.c: In function ‘main’:
sigusr1_mini.c:9: error: ‘sigval’ undeclared (first use in this function)
sigusr1_mini.c:9: error: (Each undeclared identifier is reported only once
sigusr1_mini.c:9: error: for each function it appears in.)
sigusr1_mini.c:9: error: expected ‘;’ before ‘value’
sigusr1_mini.c:10: error: ‘value’ undeclared (first use in this function)
Что мне здесь не хватает, почему он не может найти структуру sigval?
И почему g ++ может найти его?
Спасибо
Johan