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.


Anmelden zum Antworten