Цитата(vhlshik @ Sep 17 2005, 23:57)
мне надо написать програмку под линукс на обычный х86.
не могу найти аналогов досовских функций kbhit (возвращает единицу, если была нажата клавиша) и findfirst/findnext (поиск файлов). Есть ли что-то подобное под линуксом?
Не нужно пробовать никакой google...

1. Это не важно, "обычный" х86, или самый "необычны" ... вас интересует использовать набор функций, из числа определённых в POSIX, которые к платформе не относятся...
2. ... а почему, собственно, в стандарте POSIX, который развивается, исправляется, дополняется, обсуждается эдак лет ... 35 - должны быть "приблуды" (kbhit, findfirst/findnext, и ещё многое другое...) придуманные MS для какого-то DOS? У вас принципиально неправильный подход: искать в POSIX эквиваленты "приблудам", вместо этого лучше обстоятельно посидеть над POSIX...
3. относительно ваших функций:
3.1. kbhit - в POSIX любой ввод может быть блокирующий или неблокирующий, поэтому необходимости в таком безобразии как kbhit не возникает... Вам достаточно перевести ваш поток ввода в неблокирующий режим, ... напр. см. fctl() со 2-м аргументом F_SETFL и 3-м O_NONBLOCK (или O_NDELAY в POSIX). Для SYSIN это можно сделать и проще, установками setbuf() (может я и ошибся в названии функции, давно не пользовался, но что-то такое...). После этого простейший getc() (и любая функция ввода) будет вам и источником информации - был ли фактический ввод.
3.2. findfirst/findnext - см. dirent.h.
Что-то типа:
Код
DIR* dirp = opendir( "/bla-bla-bla" );
if( dirp == NULL )
cout << "no directopy!" << endl, exit( EXIT_FAILURE );
struct dirent* direntp;
for( int i = 0;; i++ ) {
if( ( direntp = readdir( dirp ) ) == NULL ) break;
cout << direntp->d_name << endl;
// ... делаете ещё что с найденным именем в каталоге
};
- это работающий код из QNX, но я сильно предполагаю (я не проверял компиляцию в Linux), что он не меняя ни буквы будет тот-же и в Linux (всё это чисто POSIX API).
Структуры и типы (dirent и др.) см. dirent.h.
А все вызовы API работы с каталогами (opendir(), readdir(), closedir(), seekdir(), telldir(), ...):
$ man <имя_функции>
... этого более чем достаточно

.