LINUX.ORG.RU

Сообщения JekLove

 

Можно ли узнать handle библиотеки, загруженной dlopen(), внутри самой этой библиотеки?

Форум — Development

Можно ли это сделать во время загрузки библиотеки, т.е. в функции dlopen()?

JekLove ()

Подскажите насчет сигналов, кто знает...

Форум — Development

У меня такая задача: есть тред (pthread), который должен ожидать чего-то в функции select. Родительский тред ждет в это время некоего семафора. Когда семафор сигналит, он должнен убить дочерний тред, ожидающий в select. Я так понимаю, нужно послать ему сигнал. Вопрос: как это красиво сделать, какой сигнал посылать? Обязательно ли пользоваться функцией pselect, или можно обойтись и select? Если можно, кто-нибудь, набросайте общую схемку. Буду очень признателен.

JekLove ()

помогите с select/pipe, плииииз...

Форум — Development

Вот такая прога не работает.
Здесь оба потока создаются нормально, один начинает писать в свой файл, сообщая каждую секунду write OK. Однако второй поток вообще ничего не сообщает, вызов select подвисает. Подскажите, плиз, в чем тут дело.

int mypipe[2];

void * start1(void*p)
{
  int i;
  char buf[1];
  int err;
  for(i=0;i<10;++i) {
    sleep(1);
    buf[0] = (char)i;
    if(write(mypipe[1], buf, 1) < 0) {
      perror("thread1: write error:");
      break;
    }    
  }
  return NULL;
}

void * start2(void*p)
{
  int i;
  int err;
  char buf[1];
  fd_set s;
  for(i = 0; i < 15; ++i) {
    FD_ZERO(&s);
    FD_SET(mypipe[0], &s);
    if((err=select(1, &s, NULL, NULL, NULL)) < 0) {
      perror("thread2: file descriptors select error:");
      break;
    }
    else if(err == 0)
      printf("select timeout\n");
    if(read(mypipe[0], buf, 1) < 0) {
      perror("thread2: read error:");
      break;
    }    
    else
      printf("data received: %d\n", buf[0]);
  }    
  return NULL;
}

int main()
{
  pthread_t th1, th2;
  int err;
  
  if((err = pipe(mypipe)) != 0) {
    perror("error creating pipe: ");
    return 1;
  }
  
  pthread_create(&th2, NULL, start2, NULL);
  pthread_create(&th1, NULL, start1, NULL);
  return 0;
}
JekLove ()

помогите с select/pipe, плииииз...

Форум — Development

Вот такая прога не работает. Здесь оба потока создаются нормально, один начинает писать в свой файл, сообщая каждую секунду write OK. Однако второй поток вообще ничего не сообщает, вызов select подвисает. Подскажите, плиз, в чем тут дело.

int mypipe[2];

void * start1(void*p) { int i; char buf[1]; int err; for(i=0;i<10;++i) { sleep(1); buf[0] = (char)i; if(write(mypipe[1], buf, 1) < 0) { perror("thread1: write error:"); break; } } return NULL; }

void * start2(void*p) { int i; int err; char buf[1]; fd_set s; for(i = 0; i < 15; ++i) { FD_ZERO(&s); FD_SET(mypipe[0], &s); if((err=select(1, &s, NULL, NULL, NULL)) < 0) { perror("thread2: file descriptors select error:"); break; } else if(err == 0) printf("select timeout\n"); if(read(mypipe[0], buf, 1) < 0) { perror("thread2: read error:"); break; } else printf("data received: %d\n", buf[0]); } return NULL; }

int main() { pthread_t th1, th2; int err; if((err = pipe(mypipe)) != 0) { perror("error creating pipe: "); return 1; } pthread_create(&th2, NULL, start2, NULL); pthread_create(&th1, NULL, start1, NULL); return 0; }

JekLove ()

pthreads: ожидание нескольких семафоров

Форум — Development

В винде есть функа WaitForMultipleObjects, принимает массив объектов и ждет одного из них или всех сразу. Есть ли в линуксе что-нибудь подобное? Или, может быть, кто-то занимался такими вещами? Прошу сильно не бить, если я что-то не то говорю, - я искал в доках, но что-то ничего не нашел. А занимаюсь тредами совсем недавно. Заранее всем большое спасибо.

JekLove ()

Насколько корректно использовать символ «тильда» в именах файлов?

Форум — Development

Ведь этот символ используется в качестве имени домашней директории...

JekLove ()

Как бы добавить директорию в путь для поиска shared-библиотек?

Форум — Development

Что-то у меня не получается. Я так понимаю, список директорий прописывается в /etc/ld.so.conf, а как мне сделать, чтобы ld находил мои *.so в моих же каталогах? Причем, конечно, для не-рута.

JekLove ()

Using ld

Форум — Development

Братцы, что-то у меня не работает :(
Я делаю так:
ld -o myprog $(MY_OBJ) $(MY_STATIC_LIB) -lm
И используется динамическая libc.so.6.
Никаких ерроров/ворнингов не дается, но при запуске myprog получаю следующее:

bash: ./myprog: /usr/lib/libc.so.1: bad ELF interpreter: No such file or directory

Что это означает? И как мне сделать, чтобы все работало? Подскажите, плз, кто знает.

JekLove ()

Как узнать родную директорию запущенной программы?

Форум — Development

На С. Т.е. если, например, екзешник проги находится в директории, входящей в PATH, а запускаю я ее из другого места. Как узнать точное имя родной директории, где лежит екзешник?

JekLove ()

Переносимость, Inline-функция fstat

Форум — Development

Народ, есть проблема: нужно из программы не на языке С позвать функцию fstat. Объявляем соответствующий дефинишн... Но проблема в том, что функция fstat объявлена в stat.h как inline и, собственно, в libc.so ее просто-напросто нет. Спрашивается: как организовать это дело, чтобы моя программа была POSIX-переносимой? Может быть, есть какой-то аналог fstat? Нехорошая проблема, но если вдруг кто может подсказать что-нибудь хорошее, буду очень признателен.

JekLove ()

Кто общался с функциями семейства spawn*()?

Форум — Development

Проблема у меня следующая. Есть старый код, который зовет функцию spawnv(). Эта функция не-POSIX, тем более что у меня в системе вообще нет этих функций spawn*(), а есть только posix_spawn().

Я понимаю, что spawnv при своем вызове зовет spawn. А spawn берет
в качестве параметра структуры, описывающие поведение дочернего процесса.
У spawnv таких аргументов нет. Спрашивается, какие аргументы по умолчанию
передаются spawn, когда я вызываю spawnv? Я искал-искал в доках,
но ничего по этому поводу не нашел.

Помогите мне, если кто-то сталкивался с такими проблемами.
Огромное thanx ответившему.




JekLove ()

Вопрос по POSIX C стандарту.

Форум — Development

Где бы мне взять список стандартных POSIX С функций? Т.е. мне нужно знать, какие функции (из библиотеки С, скажем так) отвечают стандрарту POSIX.

Вот malloc() - POSIX-функция? В man malloc написано что ANSI. ANSI включает в себя POSIX? Ну а если нет, то какую функцию нужно использовать, чтобы программа соответствовала POSIX-стандарту?

Поделитесь соображениями, пожалуйста.
Заранее благодарен.

JekLove ()

Братцы, спасите! Скажите мне, где находится дефинишн структуры DIR? (она же __dirstream)

Форум — Development

Что-то у меня ум за разум заходит... Переработал, может быть? :-/ Но НИГДЕ нет в заголовках нет этого __dirstream, а компиляется с этим символом все замечательно. У меня red hat.

JekLove ()

Как сделать так, чтобы стандартный вывод осуществлялся одновременно и на консоль и в файл?

Форум — General

Причем синхронно, т.е. cmd > log; cat log не подойдет, мне нужно сразу видеть сообщения. Кто знает, помогите, пожалуйста.

JekLove ()

Вопрос про NASM

Форум — Development

 Странная вещь: есть у меня примерно такой исходник:

        section .text
        align 16
        ...
        mov [eax+0x20], es

        или так:

        mov word [eax+0x20], es
        mov [eax+0x20], word es
        mov word [eax+0x20], word es

Что неясно: во всех случаях NASM генерит код инструкции movl.
Как я узнаю? Объектник, полученный насмом, передаю objdump,
потом смотрю листинг, и там вместо movw стоит movl.
Причем as-овский сорец компиляется правильно:

        .text
        .align 16
        movw %es, 0x20(%eax)
 
т.е. листинг, полученный objdump и оригинальный сорец 
совпадают.

В чем может быть дело? Версия НАСМа у меня 0.98.34.
Может быть, так сделать нельзя, и тогда нужно просто
вставить в сорец коды нужной команды? Подскажите, если
кто знает, как это сделать.

Всем ответившим большое спасибо.



JekLove ()

Срочно! Как из объектника .o получить асмовый (.s) листинг?

Форум — Development

Огромное спасибо спасителю.

JekLove ()

Братцы, выручайте! find & grep

Форум — General

Нужно перебрать все файлы в текущей директории и для каждого из них посмотреть, является ли он скриптом /bin/sh. Для таких файлов надобно установить атрибут chmod +x. И нужно это сделать одной командой... И использовать только find, grep, ну head, cat... без perl/awk & other. У меня не получается :((( Помогите, плииииз...

JekLove ()

Вопрос про tar, опция --files-from=-

Форум — General

Почему, когда я создаю тар-архив таким образом:

find . | tar --create --files-from=- --file=./../my_arch.tar

то каждый файл и директория присутствует в этом архве в трех экземплярах и сам архив получается соответственно в три раза больше по объему, чем сумма исходных файлов?

JekLove ()

Как получить список файлов, НЕ соответвующих шаблону?

Форум — General

Например, список всех файлов (из текущей директории и всех поддиректорий), имя которых - не "*.txt"

Подскажите, плз.

JekLove ()

Shell: проверка кода возврата приложения

Форум — Development

Братцы, только не бейте :) Ну никак не могу это сделать: нужно в скрипте запускать компилятор несколько раз, и смотреть его код возврата. Что-то у меня не выходить :(

Вот так я делал: 

r=`java MyClass.java`
if [ $r -ne 0 ]; then
echo "Bad luck"
fi

И не работает :(
А как надо? 
Заранее спасибо всем откликнувшимся :)
JekLove ()

RSS подписка на новые темы