[C]Ausgabe umleitung



  • Ich würde gerne die Ausgabe eines system() Befehls in eine Varaibale
    schreiben .
    Ist sowas realisierbar?



  • über pipes.

    oder noch einfacher: in eine textdatei und dann diese öffnen und wieder auslesen.

    mit ">"
    system ("deinbefehl>datei.txt");



  • über pipes.

    oder noch einfacher: in eine textdatei und dann diese öffnen und wieder auslesen.

    mit ">"
    system ("deinbefehl>datei.txt");

    Das mit der txt datei ist keine gute Lösung weil ich das dann in einen socket Server integriere und das dann ziemlich Speicherbelastend wäre gibt es da keine andere Lösung?

    pipes ? Wie funktioniert das hast du ne Syntax?



  • sry für spam aber der Titel hatte nichmehr gepasst.



  • nutze mal die suchfunktion unter winapi mit suchwort pipes

    wird wöchentlich gefragt.
    hier ein beispiel
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-182992-and-highlight-is-pipes.html



  • den obigen Beitrag bitte löschen dachte ich kann editieren geht aber icht..

    #include <stdio.h>
    #include <sys/types.h> 
    #include <sys/socket.h>
    #include <netinet/in.h>
    
    void error(char *msg)
    {
        perror(msg);
        exit(1);
    }
    
    int main(int argc, char *argv[])
    {    int x; 
    
         int sockfd, newsockfd, portno, clilen;
         char buffer[256]; 
         struct sockaddr_in serv_addr, cli_addr;
         int n;
         if (argc < 2) {
             fprintf(stderr,"Kein Port ausgewählt\n");
             exit(1);
         }
         sockfd = socket(AF_INET, SOCK_STREAM, 0);
         if (sockfd < 0) 
            error("ERROR beim öffnen des Sockets");
         bzero((char *) &serv_addr, sizeof(serv_addr));
         portno = atoi(argv[1]);
         serv_addr.sin_family = AF_INET;
         serv_addr.sin_addr.s_addr = INADDR_ANY;
         serv_addr.sin_port = htons(portno);
         if (bind(sockfd, (struct sockaddr *) &serv_addr,
                  sizeof(serv_addr)) < 0) 
                  error("ERROR beim binden ");
         listen(sockfd,5);
         clilen = sizeof(cli_addr);
         newsockfd = accept(sockfd, 
                     (struct sockaddr *) &cli_addr, 
                     &clilen);
         if (newsockfd < 0) 
              error("ERROR beim verbinden");
    
    while(1)
    {
    
    bzero(buffer,256);
    
         n = read(newsockfd,buffer,255);
         if (n < 0) error("ERROR beim lesen vom CLient");
         printf("Here is the message: %s\n",buffer);
    
         x=system(buffer);
    
     n = write(newsockfd,"I got your message\n",18);
         if (n < 0) error("ERROR beim schreiben zum Client");
          n = write(newsockfd,"\n",1);
         if (n < 0) error("ERROR beim schreiben zum Client");
    
         if (x != 0)
    {n = write(newsockfd,"Fehler bei der ausfuehrung\n",28);}
    
         if (n < 0) error("ERROR beim schreiben zum Client");
    
    }     
    return 0; 
    }
    

    ich möchte die ausgabe von system() dem client zurücksenden.



  • Wie kann ich das machen das ich trotzdem testen kann ob der Befehl richtig ausgeführt wird oder ein Fehlercode zurückgegeben wird.
    Da die Scripte alle win orientiert sind und ich linux programme schreibe fand ich nichts derartiges..



  • nun schauts nach linux aus..

    also hier mal rumlesen (NUR BEISPIELSWEISE)
    http://www.nt.fh-koeln.de/fachgebiete/inf/diplom/proc_sync/4/4.8.html

    ps: oder hier, auch wenns pronix ist
    http://www.pronix.de/pronix-203.html

    und mal genau sagen, ob linux oder windows, damit du passend verschoben wirst.


Anmelden zum Antworten