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


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

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

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.064 секунд. Запросов: 25.