Hi,
in dem unten angegbenen code soll einfach nur eine pipe erzeugt werden und ein zeichen in diese pipe geschrieben werden. nur leider bekomme ich bei dem aufruf:
vater 1 T
bekomme ich leider immer:
Send schlug fehl: : Socket operation on non-socket
Wer kann mir helfen?
danke pfefferkeksCode:#include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/socket.h> #define PIPE_BUF2 1 int main(int argc, char **argv) { int fd[2]; int result=0; int ressend=0; int resrecv=0; int anzahl=0; pid_t soehne[atoi(argv[1])]; pid_t pidVater=getpid(); int i=0; char puffer[PIPE_BUF2]; if (2 < argc) { anzahl = atoi(argv[1]); if ((argc-2) == anzahl) { /** * Pipe anlegen */ result = pipe(fd); if ((-1) == result) { perror("Bei erzeugen der Pipe ist ein Fehler aufgetretten: "); exit(-1); } /** * Soehne anlegen */ for (i=0; i<anzahl; i++) { if (getpid() == pidVater) { soehne[i] = fork(); if ((-1) == soehne[i]) { perror("Fehler bei fork(): "); exit(-1); } } } /** * Wenn ich der Vater bin Lese- /Schreibseite der Pipe schliessen */ if (getpid() == pidVater) { /* Lese Seite der Pipe schliessen */ close(fd[1]); /* 1 Zeichen in die PIPE schreiben */ i=2; /*nur fuer die test phase. programm funktionirt dann nur mit "<programmaufruf> 1 T" */ ressend = send(fd[0], argv[i], 1, 0); if ((-1) == ressend) { perror("Send schlug fehl: "); exit(-1); } } } else { printf ("Die Anzahl der Zeichen ist Falsch!\n"); } } else { printf ("Falsche Komandozeilenparameter!\nRichtig: Anzahl der Soehne angeben und dann folgend die auszugebenden Zeichen!\n"); } return 0;
Lesezeichen