The OpenNET Project / Index page

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

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

"Именнованые семафоры в FreeBSD 5.3" 
Сообщение от mig emailИскать по авторуВ закладки(??) on 22-Сен-05, 00:57  (MSK)
Был протестирован следующий код :

#define SEM_NAME "sem.sem"

int main(void)
{
  sem_t sema;
  sema=sem_open(SEM_NAME,O_RDWR|O_CREAT,S_IWUSR|S_IRGRP|S_IROTH,1);
...
  sem_close(sema);
  sem_unlink(SEM_NAME);
return 0;
}

Реализация Posix. Компилится на ура. Но вот на вызове sem_open() вылетает segmentation fault. В чем же может быть дело?

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

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

1. "Именнованые семафоры в FreeBSD 5.3" 
Сообщение от sas emailИскать по авторуВ закладки(ok) on 22-Сен-05, 01:24  (MSK)
>Был протестирован следующий код :
>
>#define SEM_NAME "sem.sem"
>
>int main(void)
>{
>  sem_t sema;
>  sema=sem_open(SEM_NAME,O_RDWR|O_CREAT,S_IWUSR|S_IRGRP|S_IROTH,1);
>...
>  sem_close(sema);
>  sem_unlink(SEM_NAME);
>return 0;
>}
>
>Реализация Posix. Компилится на ура. Но вот на вызове sem_open() вылетает segmentation
>fault. В чем же может быть дело?


sem_t *sem
Читайте внимательно man
Kstati i kompilirovat' sovetuju vsegda s -Wall kak minimum. V etom sluchae kompiljator sam vam skazhet gde potencial'naja problema.

Uspehov
--- sas

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Именнованые семафоры в FreeBSD 5.3" 
Сообщение от mig Искать по авторуВ закладки(??) on 22-Сен-05, 02:04  (MSK)
>>Был протестирован следующий код :
>>
>>#define SEM_NAME "sem.sem"
>>
>>int main(void)
>>{
>>  sem_t sema;
>>  sema=sem_open(SEM_NAME,O_RDWR|O_CREAT,S_IWUSR|S_IRGRP|S_IROTH,1);
>>...
>>  sem_close(sema);
>>  sem_unlink(SEM_NAME);
>>return 0;
>>}
>>
>>Реализация Posix. Компилится на ура. Но вот на вызове sem_open() вылетает segmentation
>>fault. В чем же может быть дело?
>
>
>sem_t *sem
>Читайте внимательно man
>Kstati i kompilirovat' sovetuju vsegda s -Wall kak minimum. V etom sluchae
>kompiljator sam vam skazhet gde potencial'naja problema.
>
>Uspehov
>--- sas


Извиняюсь - описка вышла у меня sem_t* sema; иначе бы и скомпилить не дало бы.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Именнованые семафоры в FreeBSD 5.3" 
Сообщение от sas emailИскать по авторуВ закладки(ok) on 22-Сен-05, 06:41  (MSK)
>>>Был протестирован следующий код :
>>>
>>>#define SEM_NAME "sem.sem"
>>>
>>>int main(void)
>>>{
>>>  sem_t sema;
>>>  sema=sem_open(SEM_NAME,O_RDWR|O_CREAT,S_IWUSR|S_IRGRP|S_IROTH,1);
>>>...
>>>  sem_close(sema);
>>>  sem_unlink(SEM_NAME);
>>>return 0;
>>>}
>>>
>>>Реализация Posix. Компилится на ура. Но вот на вызове sem_open() вылетает segmentation
>>>fault. В чем же может быть дело?
>>
>>
>>sem_t *sem
>>Читайте внимательно man
>>Kstati i kompilirovat' sovetuju vsegda s -Wall kak minimum. V etom sluchae
>>kompiljator sam vam skazhet gde potencial'naja problema.
>>
>>Uspehov
>>--- sas
>
>
>Извиняюсь - описка вышла у меня sem_t* sema; иначе бы и скомпилить
>не дало бы.

Nu togda sleduyschii sovet: Vsegda ispol'zujte proverki:

sema=sem_open(...);
if ( (sem_t*)SEM_FAILED == sema )
perror( "sem_open ERROR:" );

Krome togo naskol'ko ya pomnju imja semaphora vsegda dolzhno nachinat'sja s '/'

"/sem.sem" or better "/tmp/sem.sem"

Udachi
--- sas

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Именнованые семафоры в FreeBSD 5.3" 
Сообщение от mig Искать по авторуВ закладки(??) on 22-Сен-05, 10:09  (MSK)
>>>>Был протестирован следующий код :
>>>>
>>>>#define SEM_NAME "sem.sem"
>>>>
>>>>int main(void)
>>>>{
>>>>  sem_t sema;
>>>>  sema=sem_open(SEM_NAME,O_RDWR|O_CREAT,S_IWUSR|S_IRGRP|S_IROTH,1);
>>>>...
>>>>  sem_close(sema);
>>>>  sem_unlink(SEM_NAME);
>>>>return 0;
>>>>}
>>>>
>>>>Реализация Posix. Компилится на ура. Но вот на вызове sem_open() вылетает segmentation
>>>>fault. В чем же может быть дело?
>>>
>>>
>>>sem_t *sem
>>>Читайте внимательно man
>>>Kstati i kompilirovat' sovetuju vsegda s -Wall kak minimum. V etom sluchae
>>>kompiljator sam vam skazhet gde potencial'naja problema.
>>>
>>>Uspehov
>>>--- sas
>>
>>
>>Извиняюсь - описка вышла у меня sem_t* sema; иначе бы и скомпилить
>>не дало бы.
>
>Nu togda sleduyschii sovet: Vsegda ispol'zujte proverki:
>
>sema=sem_open(...);
> if ( (sem_t*)SEM_FAILED == sema )
> perror( "sem_open ERROR:" );
>
>Krome togo naskol'ko ya pomnju imja semaphora vsegda dolzhno nachinat'sja s '/'
>
>
>"/sem.sem" or better "/tmp/sem.sem"
>
>Udachi
>--- sas

и этот вариант я рассматривал со "/" - а именно "/tmp/sem" - одна фигня.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Именнованые семафоры в FreeBSD 5.3" 
Сообщение от sas emailИскать по авторуВ закладки(ok) on 22-Сен-05, 10:22  (MSK)
>>>>>Был протестирован следующий код :
>>>>>
>>>>>#define SEM_NAME "sem.sem"
>>>>>
>>>>>int main(void)
>>>>>{
>>>>>  sem_t sema;
>>>>>  sema=sem_open(SEM_NAME,O_RDWR|O_CREAT,S_IWUSR|S_IRGRP|S_IROTH,1);
>>>>>...
>>>>>  sem_close(sema);
>>>>>  sem_unlink(SEM_NAME);
>>>>>return 0;
>>>>>}
>>>>>
>>>>>Реализация Posix. Компилится на ура. Но вот на вызове sem_open() вылетает segmentation
>>>>>fault. В чем же может быть дело?
>>>>
>>>>
>>>>sem_t *sem
>>>>Читайте внимательно man
>>>>Kstati i kompilirovat' sovetuju vsegda s -Wall kak minimum. V etom sluchae
>>>>kompiljator sam vam skazhet gde potencial'naja problema.
>>>>
>>>>Uspehov
>>>>--- sas
>>>
>>>
>>>Извиняюсь - описка вышла у меня sem_t* sema; иначе бы и скомпилить
>>>не дало бы.
>>
>>Nu togda sleduyschii sovet: Vsegda ispol'zujte proverki:
>>
>>sema=sem_open(...);
>> if ( (sem_t*)SEM_FAILED == sema )
>> perror( "sem_open ERROR:" );
>>
>>Krome togo naskol'ko ya pomnju imja semaphora vsegda dolzhno nachinat'sja s '/'
>>
>>
>>"/sem.sem" or better "/tmp/sem.sem"
>>
>>Udachi
>>--- sas
>
>и этот вариант я рассматривал со "/" - а именно "/tmp/sem" -
>одна фигня.


A proverochka to est'?

Udachi
--- sas

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Именнованые семафоры в FreeBSD 5.3" 
Сообщение от chip emailИскать по авторуВ закладки(ok) on 22-Сен-05, 10:39  (MSK)
>Krome togo naskol'ko ya pomnju imja semaphora vsegda dolzhno nachinat'sja s '/'
>
>
>"/sem.sem" or better "/tmp/sem.sem"

На правах добавления.

Вопрошавшему man 3 sem_open, раздел BUGS:

This implementation places strict requirements on the value of name: it
must begin with a slash (`/'), contain no other slash characters, and be
less than 14 characters in length not including the terminating null
character.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "Именнованые семафоры в FreeBSD 5.3" 
Сообщение от mig Искать по авторуВ закладки(??) on 22-Сен-05, 10:56  (MSK)
>>Krome togo naskol'ko ya pomnju imja semaphora vsegda dolzhno nachinat'sja s '/'
>>
>>
>>"/sem.sem" or better "/tmp/sem.sem"
>
>На правах добавления.
>
>Вопрошавшему man 3 sem_open, раздел BUGS:
>
>This implementation places strict requirements on the value of name: it
>must begin with a slash (`/'), contain no other slash characters, and
>be
>less than 14 characters in length not including the terminating null
>character.

Если я правильно помню - то есть реализация функции px_ipc_name или очень похоже на это - на вскидку точно не скажу,не помню ;) так вот я ее использовал - она как раз и добавляет и проверяет наличие "/" в начале имени. Так что проблема совсем не в этом - требования относительно имени были соблюдены.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "Именнованые семафоры в FreeBSD 5.3" 
Сообщение от sas emailИскать по авторуВ закладки(ok) on 22-Сен-05, 11:05  (MSK)
>>Krome togo naskol'ko ya pomnju imja semaphora vsegda dolzhno nachinat'sja s '/'
>>
>>
>>"/sem.sem" or better "/tmp/sem.sem"
>
>На правах добавления.
>
>Вопрошавшему man 3 sem_open, раздел BUGS:
>
>This implementation places strict requirements on the value of name: it
>must begin with a slash (`/'), contain no other slash characters, and
>be
>less than 14 characters in length not including the terminating null
>character.


Intertesno. A kakja u Vas sistema?

On Fedora 3 64bit Heidelberg:
====================
       The name argument points to a string naming a semaphore object.  It is
       unspecified whether the name appears in the file system and is visible
       to functions that take pathnames as arguments.  The name argument con-
       forms to the construction rules for a pathname. If  name  begins  with
       the  slash  character, then processes calling sem_open() with the same
       value of name shall refer to the same semaphore  object,  as  long  as
       that  name has not been removed. If name does not begin with the slash
       character, the effect is implementation-defined. The interpretation of
       slash  characters  other  than  the leading slash character in name is
       implementation-defined.
                                                                                
On MAC OS X  1.4.2
==================
nothing specific about name even nothing about '/'  :(

~~~~~~~~~~~~~~~~~~~~~~~~~~~
I think that the problem is because for some reason sem_open fails and all operations with resulted sema pointer after this are causing segmentation fault. perror should help to understand what is causing that.

Good luck
--- sas

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "Именнованые семафоры в FreeBSD 5.3" 
Сообщение от mig Искать по авторуВ закладки(??) on 22-Сен-05, 11:19  (MSK)
>>>Krome togo naskol'ko ya pomnju imja semaphora vsegda dolzhno nachinat'sja s '/'
>>>
>>>
>>>"/sem.sem" or better "/tmp/sem.sem"
>>
>>На правах добавления.
>>
>>Вопрошавшему man 3 sem_open, раздел BUGS:
>>
>>This implementation places strict requirements on the value of name: it
>>must begin with a slash (`/'), contain no other slash characters, and
>>be
>>less than 14 characters in length not including the terminating null
>>character.
>
>
>Intertesno. A kakja u Vas sistema?
>
>On Fedora 3 64bit Heidelberg:
>====================
>       The name argument points to
>a string naming a semaphore object.  It is
>       unspecified whether the name appears
>in the file system and is visible
>       to functions that take pathnames
>as arguments.  The name argument con-
>       forms to the construction rules
>for a pathname. If  name  begins  with
>       the  slash  character,
>then processes calling sem_open() with the same
>       value of name shall refer
>to the same semaphore  object,  as  long  
>as
>       that  name has not
>been removed. If name does not begin with the slash
>       character, the effect is implementation-defined.
>The interpretation of
>       slash  characters  other
> than  the leading slash character in name is
>       implementation-defined.
>
>On MAC OS X  1.4.2
>==================
>nothing specific about name even nothing about '/'  :(
>
>~~~~~~~~~~~~~~~~~~~~~~~~~~~
>I think that the problem is because for some reason sem_open fails
>and all operations with resulted sema pointer after this are causing
>segmentation fault. perror should help to understand what is causing that.
>
>
>Good luck
>--- sas


GCC: (GNU) 3.3.3 [FreeBSD] 20031106 - это если интересует моя система(выдрано из elf'а)

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

10. "Именнованые семафоры в FreeBSD 5.3" 
Сообщение от chip emailИскать по авторуВ закладки(ok) on 22-Сен-05, 11:26  (MSK)
>Intertesno. A kakja u Vas sistema?


http://www.freebsd.org/cgi/man.cgi?query=sem_open&apropos=0&sektion=0&manpath=FreeBSD+5.4-RELEASE+and+Ports&format=html

Собственно в SUBJ'e указана.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

11. "Именнованые семафоры в FreeBSD 5.3" 
Сообщение от butcher Искать по авторуВ закладки(ok) on 22-Сен-05, 15:20  (MSK)
>Реализация Posix. Компилится на ура. Но вот на вызове sem_open() вылетает segmentation
>fault. В чем же может быть дело?

какое точно сообщение пишется? Случайно не bad system call?
Попробуйте включить в ядро поддержку P1003_1B_SEMAPHORES.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




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

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