Автор Тема: open() проблем  (Прочетена 2491 пъти)

dwni2

  • Напреднали
  • *****
  • Публикации: 79
    • Профил
open() проблем
« -: Nov 12, 2012, 16:54 »
здравейте имам проблем с споделеното отваряне на файл
в една програма на C

ето го кода


#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <errno.h>
#include <sys/stat.h>
int main(int argc,char *argv[]){
char buffer[500];
int fd=open(argv[1],O_SHARE_RDONLY), fd2=open(argv[2],O_CREAT| O_RDWR);
if(fd==-1) perror("fd1open");
if(fd2==-1) perror("fd2open");
int len;
while((len = read(fd, buffer, sizeof(buffer))) > 0){
if(len==-1) perror("read");
write(fd2,buffer,len);
if(len==-1) perror("write");
}
return 0;

компилирам и като изпалня ми връща
error: 'O_SHARE_RDONLY' undeclared (first use in this function)
явно този макрос не е деклариран от посикс
има ли някаква linux алтернатива за open да се отвори файла за споделено четене на O_SHARE_RDONLY
Активен

chen_dzen

  • Напреднали
  • *****
  • Публикации: 623
  • Distribution: Debian 6.0 Squeeze
  • Window Manager: GNOME
    • Профил
Re: open() проблем
« Отговор #1 -: Nov 12, 2012, 18:28 »
Хм ,не виждам да има деклариран аргумент O_SHARE_RDONLY в <fcntl.h> .
пробвай с http://www.kernel.org/doc/man-pages/online/pages/man3/shm_open.3.html
поздави  [_]3
« Последна редакция: Nov 12, 2012, 18:46 от chen_dzen »
Активен

dwni2

  • Напреднали
  • *****
  • Публикации: 79
    • Профил
Re: open() проблем
« Отговор #2 -: Nov 12, 2012, 19:32 »
опитвам по този начин
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <errno.h>
#include <sys/mman.h>
int main(int argc,char *argv[]){
char buffer[500];
int fd=shm_open(argv[1],O_RDONLY,0755), fd2=open(argv[2],O_CREAT| O_RDWR);
if(fd==-1) perror("fd1open");
if(fd2==-1) perror("fd2open");
int len;
while((len = read(fd, buffer, sizeof(buffer))) > 0){
if(len==-1) perror("read");
write(fd2,buffer,len);
if(len==-1) perror("write");
}
return 0;}

но като изпълня програмата errno ми дава

fd1open: No such file or directory
дали има някоя алтернатива на опен която да върши тази работа
Активен

kifavi8024

  • Новаци
  • *
  • Публикации: 0
    • Профил
Re: open() проблем
« Отговор #3 -: Nov 13, 2012, 04:30 »
http://stackoverflow.com/questions/11102599/how-do-i-change-the-shm-open-path

При мен проработи ето така:
Код
GeSHi (C):
  1. int fd=shm_open("../../home/ubuntum/test2",O_RDONLY,0755)

Но нямам никаква идея дали това е правилна имплементация :)
Общо взето си търси разни работи в /run/shm по подразбиране (това е при Ubuntu).
« Последна редакция: Nov 13, 2012, 05:07 от !ntel »
Активен

dwni2

  • Напреднали
  • *****
  • Публикации: 79
    • Профил
Re: open() проблем
« Отговор #4 -: Nov 13, 2012, 07:36 »
и при мен тръгна по този начин но също като при open() когато се опитам да отворя дадено устройство когато е използвано
например /dev/video0
не става иначе когато устройството не се използва работи
мисълта ми е има ли някаква линукс алтернатива
на тези макроси O_SHARE_RDONLY, O_SHARE_WRONLY, O_SHARE_RDWR
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: open() проблем
« Отговор #5 -: Nov 13, 2012, 11:40 »
Не и не зависи от това. Device node-овете не са обикновени файлове. Това дали един или повече процеси могат да го отварят е въпрос на имплементация на драйвера в ядрото. Примерно може да го позволява (/dev/zero), а може и да не го позволява (/dev/ttyS*).
Активен

"Knowledge is power" - France is Bacon

kifavi8024

  • Новаци
  • *
  • Публикации: 0
    • Профил
Re: open() проблем
« Отговор #6 -: Nov 13, 2012, 15:11 »
Също така е хубаво да се ползва unlink-ването.
Вчера гледах пример с грешка при достъп до ttys*.
Проблема се решава като предварително се затвори или unlink-не дадения ресурс :)

Голем боламач раЗ^иРиШ Ли.
Активен

dwni2

  • Напреднали
  • *****
  • Публикации: 79
    • Профил
Re: open() проблем
« Отговор #7 -: Nov 13, 2012, 15:25 »
може ли пример как да използвам тези /device
Активен

dwni2

  • Напреднали
  • *****
  • Публикации: 79
    • Профил
Re: open() проблем
« Отговор #8 -: Nov 14, 2012, 09:09 »
мойете ли да ми пратите този линк за проблема за достъп през tty
и може ли по някакъв начин да се разреши многократно едновременно отваряне на  device node
Активен

kifavi8024

  • Новаци
  • *
  • Публикации: 0
    • Профил
Re: open() проблем
« Отговор #9 -: Nov 14, 2012, 18:45 »
Относно първото питане - видях няколко примера свързани с Permission denied  shm_open() error (просто потърси в интернет).
Ето ти една примерна имплементация (с unlink-ване):
Modbus Slave Protocol Library

За второ питане ще трябва да провериш документацията и/или да потърсиш в Google.
« Последна редакция: Nov 14, 2012, 18:51 от !ntel »
Активен

dwni2

  • Напреднали
  • *****
  • Публикации: 79
    • Профил
Re: open() проблем
« Отговор #10 -: Nov 15, 2012, 08:34 »
оки мерси ще го погледна :)
Активен

tsurko

  • Участници
  • ***
  • Публикации: 9
    • Профил
Re: open() проблем
« Отговор #11 -: Nov 15, 2012, 17:22 »
open работи с файлове, shm_open - със shared memory (IPC Инструмент). Съдейки по кода... по-скоро става дума за файлове.
Пробвай така:
int fd=open(argv[1],O_RDONLY);
fd2=open(argv[2],O_RDWR);

Също така те съветвам да си форматираш кода по-добре. Така ще е по-лесен за четене както от теб, така и от другите :)
Активен

borovaka

  • Напреднали
  • *****
  • Публикации: 1331
  • Distribution: Каквото дойде
  • Window Manager: Gnome / KDE
    • Профил
Re: open() проблем
« Отговор #12 -: Nov 16, 2012, 10:20 »
Нали ти писах в друг форум. За това което искаш да направиш потърси Video4Linux Loopback. Даже имаше някакво приложение което го ползваше за да слага ефекти в реално време на stream от камера.
Активен

Та извода е прост: "Колкото по-големи ла*ната - толкова по-малка щетата! ... моралната де, не материалната"

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
Cyr za Open Writer ot Open Office
Настройка на програми
line 3 3974 Последна публикация Sep 11, 2009, 23:50
от Odido
Open Office
Настройка на програми
jojopara 1 1719 Последна публикация Jun 28, 2003, 18:16
от kennedy
Open GL
Настройка на хардуер
KageMusha 7 3152 Последна публикация Jul 07, 2004, 01:20
от KageMusha
Open PC
Хумор
sebastianz55 8 2794 Последна публикация Nov 08, 2004, 20:24
от Филип Бонев
warehuse open na xbuntu 12.4
Настройка на програми
a2k 11 2093 Последна публикация Dec 26, 2012, 19:42
от vixon