Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: помогите разобраться с хидерами  (Прочитано 2536 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн obli

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
1)Инетресует происхождение этих хидеров типа <machine/console.h> , <sys/conosole.h> это вообще один хидер или 2
те книги что читал по с нигде упоминание на такие конструкции небыло
2)И где или как можно найти соответствие какой хидер с какой библиотекой идет если такое возможно .

Оффлайн Kwah

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 1442
  • Ubuntu 17.10
    • Просмотр профиля
Re: помогите разобраться с хидерами
« Ответ #1 : 05 Июнь 2008, 13:21:18 »
1)Инетресует происхождение этих хидеров типа <machine/console.h> , <sys/conosole.h> это вообще один хидер или 2
те книги что читал по с нигде упоминание на такие конструкции небыло
Два. Файлы-то разные.

Что это за заголовки должно быть понятно по исходникам и сопровождающей их документации, это могут быть какие угодно заголовочные файлы от системных/библиотечных до заголовочных файлов конкретного проекта.

Цитировать
2)И где или как можно найти соответствие какой хидер с какой библиотекой идет если такое возможно .
Только искать, locate, apt-file и тому подобные утилиты в руки.

Оффлайн obli

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: помогите разобраться с хидерами
« Ответ #2 : 05 Июнь 2008, 14:35:39 »
1)брр получается <machine/console.h> это перечесление и можно вместо одного инклуда писать так
#include <machine.h>
#include <console.h>

2) а если это исходник типа маленька прога от http://pascal.tsu.ru/unix/syscons/app4.html

#include <machine/console.h>
#include <ctype.h>

fkeyarg_t fkey;

main()
{ unsigned char c; int i,j;
 

  for (i = 1; i <= 96; i++){
    fkey.keynum = i - 1;
    if (ioctl(0, GETFKEY, &fkey) < 0) perror(0);

    printf("fkey%2d\t", i);

/* здесь идет слегка "навороченный" вывод */
/* чтобы не пытаться печатать "непечатные" коды ... */

    for (j = 0; j < fkey.flen; j++){
      c = fkey.keydef[j];
      printf(isprint(c)? "%c":"%#o", c);
    }

/* ... и распечатать все в четыре колонки */

    printf((i % 4)?"\t":"\n");
  }
  exit();
}

то че смотрим какаю он структуру впихнул и по ней угадаваем библиотеку ;
или все console.h  совместимы ?

Оффлайн ziv

  • Активист
  • *
  • Сообщений: 403
    • Просмотр профиля
Re: помогите разобраться с хидерами
« Ответ #3 : 05 Июнь 2008, 14:56:18 »
1)брр получается <machine/console.h> это перечесление и можно вместо одного инклуда писать так
#include <machine.h>
#include <console.h>

<machine/console.h> - это значит, что console.h находится в подкаталоге machine некоего каталога. Например, /usr/include/machine/console.h

Оффлайн Kwah

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 1442
  • Ubuntu 17.10
    • Просмотр профиля
Re: помогите разобраться с хидерами
« Ответ #4 : 05 Июнь 2008, 15:02:02 »
Нет, machine/console.h - это относительное имя файла. Полное имя файла собирается из опций компилятора (переменных окружения) препроцессором. Пример: если будет написано gcc -I../myheaders то при наличии в каталоге ../myheaders подкаталога machine с файлом console.h в исходный код будет включен именно он.

Заголовочные файлы установленных глобально библиотек живут в /usr/include.

Оффлайн obli

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: помогите разобраться с хидерами
« Ответ #5 : 05 Июнь 2008, 15:37:06 »
1)ну тут опций очно не каких нет )) ну серавно спасибо за возможные грабли
2)Да если такой у меня нет ( а хочется скомплить исходник )) 

Оффлайн S.Tokarev

  • Активист
  • *
  • Сообщений: 415
    • Просмотр профиля
Re: помогите разобраться с хидерами
« Ответ #6 : 05 Июнь 2008, 16:12:30 »
Убираешь инклуд отсутствующего файла, компилишь и смотришь на что ругается.

Оффлайн obli

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: помогите разобраться с хидерами
« Ответ #7 : 05 Июнь 2008, 16:53:09 »
ню будет ругаться на

fkeyarg_t fkey;

я и так знаю структура  потому как ей неоткуда взятся кроме как из console.h будет что то типа необявленный тип fkey

Thread

  • Гость
Re: помогите разобраться с хидерами
« Ответ #8 : 05 Июнь 2008, 16:57:28 »
Начинать изучение C надо с нормальных примеров. Я и то про этот machine/ первый раз слышу.

Оффлайн S.Tokarev

  • Активист
  • *
  • Сообщений: 415
    • Просмотр профиля
Re: помогите разобраться с хидерами
« Ответ #9 : 05 Июнь 2008, 17:01:43 »
Вот и я так подумал.
А теперь погугли fkeyarg_t и будет тебе счастье.
На самом деле речь о драйвере клавы поскольку ioctl GETFKEY

man keyboard может спасти отца русской демократии

Оффлайн S.Tokarev

  • Активист
  • *
  • Сообщений: 415
    • Просмотр профиля
Re: помогите разобраться с хидерами
« Ответ #10 : 05 Июнь 2008, 17:03:10 »
Начинать изучение C надо с нормальных примеров. Я и то про этот machine/ первый раз слышу.
А что там слышать. машиннозависимый каталог какой-либо.
ЗЫ Кстати можно глянуть sys/key.h

Оффлайн obli

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: помогите разобраться с хидерами
« Ответ #11 : 06 Июнь 2008, 12:40:26 »
1)спасиб осталось теперь разобраться с ioctl
чиатал о нем раньше только нефига не понял
может кто нить может простыми словами что он делает
ток не надо тыкать в описания типа

"Каждое устройство может иметь собственные команды ioctl, которые могут читать ioctl (для передачи данных от процесса ядру), записывать ioctl (чтобы возвратить информацию процессу)"

Сыт по горло теперь хочется ясности ))

Оффлайн S.Tokarev

  • Активист
  • *
  • Сообщений: 415
    • Просмотр профиля
Re: помогите разобраться с хидерами
« Ответ #12 : 06 Июнь 2008, 13:35:51 »
ioctl очень простая фишка.
это одна из функций позволяющая отдавать комманды драйверу устройства или вытягивать из драйвера информацию о конфиге и т.п. Система определяет общий формат вызова функции а семантика всех аргументов кроме дескриптора файла определяется самим драйвером устройства.
Поэтому для каждого драйвера устройства должно быть описание аргументов.

« Последнее редактирование: 06 Июнь 2008, 13:38:03 от S.Tokarev »

Оффлайн obli

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: помогите разобраться с хидерами
« Ответ #13 : 06 Июнь 2008, 15:08:40 »
Ну блин вы даёте  :D  быстро оперативно без лишнего ляля -Респект и спасиб
тепереча  хоть есть отправная точка в копании POSIX

Оффлайн obli

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: помогите разобраться с хидерами
« Ответ #14 : 06 Июнь 2008, 15:20:01 »
да напоследок ясность теперь есть  ioctl точно не работает с ядром или она может работать с ядром так и сдрайвером?

 

Страница сгенерирована за 0.061 секунд. Запросов: 24.