The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"семафор"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"семафор"
Сообщение от sproot Искать по авторуВ закладки(ok) on 09-Дек-04, 07:42  (MSK)
Не создается семафор при вызове
mutex=sem_open((const char*)"/Ar534", O_CREAT, 0644, 1);
система: Linux RedHat
Поскажите куда копать.
=============================================
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/wait.h>
#include <fcntl.h>
#include <stdio.h>
#include <errno.h>
#include <signal.h>
#include <semaphore.h>
#include <sys/mman.h>

int main(void)
{
    int fd, i, nloop=10000;
    sem_t *mutex;
    int *ptr;
    
    fd = open("/dev/zero", O_RDWR);
    if (fd < 0) printf("Error open /dev/zero\n");
else printf("Succes open /dev/zero\n");

    ptr = mmap(NULL, sizeof(int), PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
    close(fd);
    
    mutex=sem_open((const char*)"/Ar534", O_CREAT, 0644, 1);
    
    if ( mutex == (sem_t *)SEM_FAILED ) {
        printf("sem_open failed");
    } else sem_unlink("/Ar534");


    setbuf(stdout, NULL);
    
    if (fork()==0) {
for (i = 0; i < nloop; i++) {
    sem_wait(mutex);
    printf("child: %d\n", (*ptr)++);
    sem_post(mutex);
}
exit(0);
    }

    
    for (i = 0; i < nloop; i++) {
    sem_wait(mutex);
    printf("parent: %d\n", (*ptr)++);
    sem_post(mutex);
    }
    
    exit(0);
===================================================

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "семафор"
Сообщение от klalafuda emailИскать по авторуВ закладки on 09-Дек-04, 09:46  (MSK)
>Не создается семафор при вызове
>mutex=sem_open((const char*)"/Ar534", O_CREAT, 0644, 1);
>система: Linux RedHat

что означает - не создается?

>Поскажите куда копать.

http://ln.com.ua/~openxs/articles/smart-questions-ru.html#beprecise

// wbr

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "семафор"
Сообщение от sproot Искать по авторуВ закладки(ok) on 09-Дек-04, 10:47  (MSK)
>>Не создается семафор при вызове
>>mutex=sem_open((const char*)"/Ar534", O_CREAT, 0644, 1);
>>система: Linux RedHat
>
>что означает - не создается?
>
что сказано то и означает...
при запуске пишет: sem_open failed.
т.е. объект ядра "семафор" не создался.
спрашивается почему ?
  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "семафор"
Сообщение от klalafuda emailИскать по авторуВ закладки on 09-Дек-04, 10:53  (MSK)
>>>Не создается семафор при вызове
>>>mutex=sem_open((const char*)"/Ar534", O_CREAT, 0644, 1);
>>>система: Linux RedHat
>>
>>что означает - не создается?
>>
>что сказано то и означает...
>при запуске пишет: sem_open failed.
>т.е. объект ядра "семафор" не создался.
>спрашивается почему ?

1. http://www.chiark.greenend.org.uk/~sgtatham/bugs.html
2. man errno
3. man sem_open
4. осознав свою ошибку, попробуйте спросить снова.

// wbr

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "семафор"
Сообщение от sproot Искать по авторуВ закладки(ok) on 09-Дек-04, 11:21  (MSK)
>>>>Не создается семафор при вызове
>>>>mutex=sem_open((const char*)"/Ar534", O_CREAT, 0644, 1);
>>>>система: Linux RedHat
>>>
>>>что означает - не создается?
>>>
>>что сказано то и означает...
>>при запуске пишет: sem_open failed.
>>т.е. объект ядра "семафор" не создался.
>>спрашивается почему ?
>
>1. http://www.chiark.greenend.org.uk/~sgtatham/bugs.html
>2. man errno
>3. man sem_open
>4. осознав свою ошибку, попробуйте спросить снова.
>
>// wbr
Вместо того чтобы дать толковый совет, Вы всякую хрень пишете.
Ну да.. так же проще...

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "семафор"
Сообщение от klalafuda emailИскать по авторуВ закладки on 09-Дек-04, 11:22  (MSK)
>Вместо того чтобы дать толковый совет, Вы всякую хрень пишете.
>Ну да.. так же проще...

не нравится - думайте сами
хотя с этим я так понимаю возникают некоторые проблемы

// wbr

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "семафор"
Сообщение от sproot Искать по авторуВ закладки(ok) on 09-Дек-04, 11:41  (MSK)
>>Вместо того чтобы дать толковый совет, Вы всякую хрень пишете.
>>Ну да.. так же проще...
>
>не нравится - думайте сами
>хотя с этим я так понимаю возникают некоторые проблемы
>
>// wbr
А что мне должно нравится ?
Вы наверно сами не программировали семафоры от того и советы типа
man *, а как sem_open пользоватся я и без Вас знаю.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "семафор"
Сообщение от klalafuda emailИскать по авторуВ закладки on 09-Дек-04, 11:49  (MSK)
>>>Вместо того чтобы дать толковый совет, Вы всякую хрень пишете.
>>>Ну да.. так же проще...
>>
>>не нравится - думайте сами
>>хотя с этим я так понимаю возникают некоторые проблемы
>>
>>// wbr
>А что мне должно нравится ?
>Вы наверно сами не программировали семафоры от того и советы типа
>man *, а как sem_open пользоватся я и без Вас знаю.

man errno не навело вас ни на какие мысли? зря. все экстрасенсы сегодня в отпуске. sem_opem() может вернуть ошибку в десяти разных случаях. без указания расшифровки значения errno после вызова sem_open() ваш код с точки зрения анализа совершенно бесполезен и сам по себе "sem_open failed" не говорит ровным счетом ничего. so приводите код в нормальный вид.

// wbr

  Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "семафор"
Сообщение от sproot Искать по авторуВ закладки(ok) on 09-Дек-04, 11:57  (MSK)
>>>>Вместо того чтобы дать толковый совет, Вы всякую хрень пишете.
>>>>Ну да.. так же проще...
>>>
>>>не нравится - думайте сами
>>>хотя с этим я так понимаю возникают некоторые проблемы
>>>
>>>// wbr
>>А что мне должно нравится ?
>>Вы наверно сами не программировали семафоры от того и советы типа
>>man *, а как sem_open пользоватся я и без Вас знаю.
>
>man errno не навело вас ни на какие мысли? зря. все экстрасенсы
>сегодня в отпуске. sem_opem() может вернуть ошибку в десяти разных случаях.
>без указания расшифровки значения errno после вызова sem_open() ваш код с
>точки зрения анализа совершенно бесполезен и сам по себе "sem_open failed"
>не говорит ровным счетом ничего. so приводите код в нормальный вид.
>
>
>// wbr
ENOSYS          38      /* Function not implemented */
мда...неужели в RedHat нет нормальной поддержки Posix семафоров
sem_init с pshared не канает и тут еще sem_open.
значит остается только System V ? а может лучше pthread с его мьютексами ?
  Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "семафор"
Сообщение от klalafuda emailИскать по авторуВ закладки on 09-Дек-04, 12:15  (MSK)
>ENOSYS          38  
>    /* Function not implemented */
>мда...неужели в RedHat нет нормальной поддержки Posix семафоров
>sem_init с pshared не канает и тут еще sem_open.
>значит остается только System V ? а может лучше pthread с его
>мьютексами ?

ничего не скажу за RH но, допустим, на NetBSD даже в -current есть поддержка неименованных локальных семафоров и нет поддержки именованных. видимо, как-то у народа руки до них не дошли. so совершенно запросто. зато с SysV IPC все в полном порядке.

ps: в конкретно взятом мане на конкретно взятой системе должно быть сказано, что и как поддерживается именно здесь и сейчас. как минимум на BSD или QNX. уверен, на Linux то-же. so man sem_open был приведен отнюдь не просто так.

// wbr

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру