2
|
Програмиране / Общ форум / Re: open() проблем
|
-: Nov 14, 2012, 09:09
|
мойете ли да ми пратите този линк за проблема за достъп през tty и може ли по някакъв начин да се разреши многократно едновременно отваряне на device node
|
|
|
4
|
Програмиране / Общ форум / Re: open() проблем
|
-: Nov 13, 2012, 07:36
|
и при мен тръгна по този начин но също като при open() когато се опитам да отворя дадено устройство когато е използвано например /dev/video0 не става иначе когато устройството не се използва работи мисълта ми е има ли някаква линукс алтернатива на тези макроси O_SHARE_RDONLY, O_SHARE_WRONLY, O_SHARE_RDWR
|
|
|
5
|
Програмиране / Общ форум / Re: open() проблем
|
-: 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 дали има някоя алтернатива на опен която да върши тази работа
|
|
|
6
|
Програмиране / Общ форум / 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
|
|
|
7
|
Програмиране / Web development / Re: socket програмиране
|
-: Sep 28, 2012, 22:58
|
мисля че разбрах от къде е грешката във втория пример вклучих errno.h и проверих резултата от select връща -1 и настройва errno на bad file descriptor значи след for(a=sock;a<FD_SETSIZE;a++) FD_SET(a,&read); във втория пример аз се опитвам да задам несъществуващи файлови дескриптори и за това ми връща -1 selecta и не функционира добре че е errno да разбера причината
|
|
|
8
|
Програмиране / Web development / Re: socket програмиране
|
-: Sep 28, 2012, 20:41
|
мерси но защо и като коментирам FD_ZERO е същото след първия recv получавам stringa 1024 пъти и после блокира и не получава съобщенията сървъра а при първия случай работи коректно защо при първия случай се използват две променливи от тип fd_set каква е разликата защото и при първия случай има FD_ZERO но работи
|
|
|
9
|
Програмиране / Web development / socket програмиране
|
-: Sep 28, 2012, 19:11
|
здравейте изкам да попитам защо от тези два кода първия работи а втория не 1 GeSHi (C): #include <stdio.h> #include <string.h> #include <stdlib.h> #include <sys/types.h> #include <sys/socket.h> #include <netdb.h> #include <errno.h> #include <sys/select.h> int main(int argc,char *argv[]){ int port,sock, check,newsock,a,b,yes; char buf[255],buf1[255],buf2[255]; struct sockaddr_in server,client1; socklen_t len=sizeof(client1);; fd_set read,master; port=atoi(argv[1]); memset(&server,0,sizeof(server)); server.sin_family=AF_INET; server.sin_port=htons(port); server.sin_addr.s_addr=INADDR_ANY; sock=socket(AF_INET,SOCK_STREAM,0); setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,&yes,sizeof(yes)); bind(sock,(struct sockaddr *)&server, sizeof(server)); listen(sock,10); FD_ZERO(&master); FD_SET(sock,&master); FD_SET(0,&master); for(;;){ gore: read=master; select(FD_SETSIZE,&read,NULL,NULL,NULL); for(a=0;a<FD_SETSIZE;a++){ if(FD_ISSET(a,&read)&&a!=0){ if(a==sock){ newsock=accept(sock,(struct sockaddr*)&client1,&len); FD_SET(newsock,&master); inet_ntop(AF_INET, &(client1.sin_addr), buf1, INET_ADDRSTRLEN); printf("New connection from socket %d ip address %s port %d\n",newsock , buf1 , n } else{ check=recv(a,buf,sizeof(buf),0); if(!check){ close(a); FD_CLR(a,&master); goto gore;} buf[check]='\0'; } } else if(FD_ISSET(0,&read)){ gets(buf1); gets(buf2); check=strlen(buf1); buf[check]=0; b=atoi(buf2); if(b==3){ printf("Trqbva da ne se izpra6tat syob6teniq do ekrana\n"); goto gore;} send(b,buf1,strlen(buf1),0); goto gore; } } } return 0;}
2 GeSHi (C): #include <stdio.h> #include <string.h> #include <stdlib.h> #include <sys/types.h> #include <sys/socket.h> #include <netdb.h> #include <stdlib.h> int main(int argc,char *argv[]){ int a,b,sock,newsock,port; char buf[255]; fd_set read; struct sockaddr_in server,client; socklen_t clilen; memset(&server,0,sizeof(server)); clilen=sizeof(server); sock=socket(AF_INET,SOCK_STREAM,0); server.sin_family=AF_INET; server.sin_addr.s_addr=INADDR_ANY; server.sin_port=htons(atoi(argv[1])); bind(sock,(struct sockaddr *)&server,sizeof(server)); listen(sock,10); while(1){ FD_ZERO(&read); for(a=sock;a<FD_SETSIZE;a++) FD_SET(a,&read); select(FD_SETSIZE,&read,NULL,NULL,NULL); for(a=sock;a<FD_SETSIZE;a++) if(FD_ISSET(a,&read)){ if(a==sock) newsock=accept(sock,(struct sockaddr*) &server, &clilen); else{ b=recv(a,buf,sizeof(buf),0); buf[b]=0; }}} return 0;}
|
|
|
10
|
Linux секция за начинаещи / Настройка на програми / Re: ata2: SRST failed (errno=-16
|
-: Apr 14, 2012, 18:07
|
значи наместих кабелите на двата харда сега го намира smartctl --all /dev/sdb smartctl 5.40 2010-10-16 r3189 [i486-slackware-linux-gnu] (local build) Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net=== START OF INFORMATION SECTION === Model Family: Seagate Barracuda 7200.10 family Device Model: ST3250310AS Serial Number: 9RY2JJN1 Firmware Version: 3.AAC User Capacity: 250,059,350,016 bytes Device is: In smartctl database [for details use: -P show] ATA Version is: 7 ATA Standard is: Exact ATA specification draft version not indicated Local Time is: Sat Apr 14 18:01:22 2012 EEST SMART support is: Available - device has SMART capability. SMART support is: Disabled SMART Disabled. Use option -s with argument 'on' to enable it. root@i:~# root@i:~# smartctl --all /dev/sda smartctl 5.40 2010-10-16 r3189 [i486-slackware-linux-gnu] (local build) Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net=== START OF INFORMATION SECTION === Model Family: Seagate Barracuda 7200.10 family Device Model: ST3160815AS Serial Number: 6RA6DEM6 Firmware Version: 4.AAB User Capacity: 160,041,885,696 bytes Device is: In smartctl database [for details use: -P show] ATA Version is: 7 ATA Standard is: Exact ATA specification draft version not indicated Local Time is: Sat Apr 14 18:05:59 2012 EEST SMART support is: Available - device has SMART capability. SMART support is: Disabled SMART Disabled. Use option -s with argument 'on' to enable it. да не би да не прави контакт добър
|
|
|
11
|
Linux секция за начинаещи / Настройка на програми / ata2: SRST failed (errno=-16
|
-: Apr 13, 2012, 22:22
|
когато зареждам линукса ми дава това съоб6тение
ata2: link is slow to respond, please be patient (ready=0) [ 206.807085] ata2: soft resetting link [ 212.007025] ata2: link is slow to respond, please be patient (ready=0) [ 216.852091] ata2: soft resetting link [ 222.052024] ata2: link is slow to respond, please be patient (ready=0) ata2: SRST failed (errno=-16) защо е тъка компа ми е със два харддиска sata sda и sdb за6то става тъка
|
|
|
|