operation not supported
-
also hallo erstmal.
ich habe das problem, dass ich nicht auf mein shared memory schreiben oder lesen kann.
habe mac osx 10.5.6 , gcc compiler#include <stdio.h> #include<stdlib.h> #include<dirent.h> #include<String.h> #include<time.h> #include<sys/stat.h> #include <unistd.h> #include <fcntl.h> #include<sys/types.h> #include <ctype.h> #include <math.h> #include <sys/mman.h> int ctoi(char c){ char h[1]; h[0]=c; return atoi(h); } void itoa(int number,char* number_str){ sprintf(number_str, "%i", number); //return number_str; } void status(int* fd,char* s){ write(*fd,s,sizeof(s)); } struct Auftrag{ int empty; char s[30]; int cpid; int nummer; }; struct chain{ struct chain* next; struct chain* last; struct Auftrag a; }; struct SStatus{ char doing[30]; int pida; int nummera; int pid; int nummer; }; struct Client{ int pid; int alife; }; void getdown(int i){ printf("SIGTERM erhalten. beende mich...\n"); int ii=(shm_open("status.tmp",O_TRUNC,S_IRWXU)); status(&ii,"b"); sleep(10); printf("runtergefahren"); exit(0); } int main(int argc,char *argv[]){ printf("bla\n"); extern int errno; struct Auftrag auftrag,altauftrag; int i=0; int t=0; int clientcounter=0; printf("max anzahl clients: int %i\n",sizeof(auftrag)); char max[10]; //scanf("%s",max); int clientids[atoi(max)]; char input[200]; int toserver; int toclient; int interface; printf("%i unlink\n",shm_unlink("/toclient.tmp")); shm_unlink("/interface.tmp"); int ts=mkfifo("toserver.tmp", S_IRWXU);perror("fehler1 "); errno=0; toserver=open("toserver.tmp",O_RDWR|O_TRUNC,S_IRWXU);perror("fehler2 "); errno=1; //pa=mmap(addr, len, prot, flags, fildes, off); toclient= shm_open("/toclient.tmp",O_CREAT|O_RDWR,S_IRWXU);perror("fehler3 "); errno=0; //void* cptr=mmap(0,sizeof(int), PROT_WRITE,MAP_SHARED,toclient,0);perror("fehler4 "); errno=33; interface=shm_open("/interface.tmp",O_CREAT|O_RDWR ,S_IRWXU);perror("fehler5 "); errno=0; //memcpy(cptr,&i,sizeof(int)); printf("server%i client%i interface%i (%i)\n",toserver,toclient,interface,errno); perror("fehler "); i=getpid(); auftrag.empty=1; auftrag.nummer=1; strcpy(auftrag.s,"hallo klaptz?"); printf("noch\n"); //memcpy(max,&auftrag,sizeof(auftrag)-1); //exit(0);errno=0; write(toserver,&auftrag,sizeof(auftrag)); perror("1write "); ffwrite(&auftrag,sizeof(auftrag),1,toserver); perror("Uwrite "); //ffwrite(&auftrag,sizeof(auftrag),1,toserver); signal(SIGTERM,getdown); i=getpid(); printf("%i bytes geschrieben\n", write(toserver,&(i),sizeof(int)-1)); perror("2write "); printf("%i bytes geschrieben\n", write(interface,&(i),sizeof(int)-1)); perror("2write "); printf("%i bytes geschrieben\n", write(toclient,&(i),sizeof(int)-1)); perror("2write "); lseek(interface,0,SEEK_SET);perror("seek "); printf("initialisiert!\n");
Ausgabe:
bla max anzahl clients: int 44 0 unlink fehler1 : File exists fehler2 : File exists fehler3 : File exists fehler5 : File exists server3 client4 interface5 (0) fehler : File exists noch 1write : File exists Uwrite : File exists 3 bytes geschrieben 2write : File exists -1 bytes geschrieben 2write : Operation not supported -1 bytes geschrieben 2write : Operation not supported seek : Illegal seek initialisiert!
was heißt dieses operation not supported? was wird warum und weshalb nicht nicht unterstützt?
dankeschööön
-
ich habe schon viel gegoogelt. nichts gefunden was mir hilft.