Zum Inhalt springen

Scratch

Mitglieder
  • Gesamte Inhalte

    485
  • Benutzer seit

  • Letzter Besuch

Beiträge von Scratch

  1. @Hakawamu

    Sorry das war vielleicht etwas dumm geschrieben:

    Mir geht es in diesem Post nur um Threads in C++ (vorrangig unter Linux).

    Das Beispiel zu den Sockets war nur deshalb erwähnt, weil Klotzkopps sagte:

    Dazu kommt noch, dass Standard-C++ (noch) keine Threads kennt. ...

    Ich nehme anhand dieser Aussage an das es sich hier um Linux und Windows spezifische Unterschiede handelt ;-)

    Deshalb auch die Frage nach der Entwicklungsumgebung.

    Gruß Scratch

  2. @Goos:

    Ich meine ein Grundbeispiel ... das sogennante "Hello World" für Threads.

    Aber Danke für deine "sinnvolle" Antwort ... das es nicht leicht is weiss ich selber. :P

    @Klotzkopp:

    Linux, g++

    Das heisst dann auch das ich wie bei den Sockets für Linux und Windows einzeln entwickeln muss?

    Gruß Scratch

  3. Ok, daran lags ;-)

    Jetzt hab ich aber noch eine Frage über realloc

    astrFile = NULL;
    a = 0;
    while(!file.eof())
    {
    getline(file,strLine);
    a++;
    astrFile = (string *) realloc(astrFile,a * sizeof(string));
    astrFile[a].assign(strLine);
    }
    file.close();[/PHP]

    ergibt: "Segmentation fault"

    Kann es daran liegen das sizeof(string) variabel ist, je nach Länge des Strings?

    Oder gibt es in C++ vielleicht noch eine viel bessere Lösung für sowas mit vektor oder queue?

  4. Zitat von Klotzkopp Die casts auf den Rückgabewert von malloc sind unnötig und können Fehler verdecken. malloc gibt void* zurück, und der ist in jeden anderen Zeigertyp implizit konvertierbar, da braucht man keinen cast.

    Lasse ich den cast weg kommt:

    cannot convert `void *' to `char *' in assignment

    Compiler ist gcc.

    Gruß Scratch

  5. Hi,

    also danke erstmal für die Antworten.

    Was haltet ihr von dieser Lösung:

    int file_countRows(char *pFileName)
    {
    FILE *pFile;
    char strBuffer[ROW];
    int i;

    // Open the file
    pFile = fopen(pFileName,"r");
    if(pFile == NULL)
    {
    return -1;
    }

    // Count the rows
    i = 0;
    while(fgets(strBuffer,ROW,pFile))
    {
    i++;
    }
    fclose(pFile);

    return i;
    }

    char** file_read(char *pFileName)
    {
    FILE *pFile;
    char strBuffer[ROW];

    int i,j;
    int iRows;

    char **pArray;

    // Count rows of the file
    iRows = file_countRows(pFileName);
    if(iRows < 0)
    {
    return NULL;
    }

    // Allocate space for the array rows
    pArray = (char **) malloc(iRows * sizeof(char *));
    if(pArray == NULL)
    {
    printf("Connat allocate enough virtual memory.\n");
    return NULL;
    }

    // Allocate space for the array cols
    for(i = 0;i < iRows;i++)
    {
    pArray[i] = (char *) malloc(ROW * sizeof(char));
    if(pArray[i] == NULL)
    {
    printf("Connat allocate enough virtual memory for row %d\n",i);
    return NULL;
    }
    }

    // Open the file
    pFile = fopen(pFileName,"r");
    if(pFile == NULL)
    {
    printf("Connat open file");
    return NULL;
    }

    // Fill the array
    i = 0;
    while(fgets(strBuffer,ROW,pFile))
    {
    strcpy(pArray[i],strBuffer);
    i++;
    }
    fclose(pFile);

    return pArray;
    }[/PHP]

    Vorlage hierfür war ein sehr gutes Beispiel von http://www.pronix.de/pronix-762.html

    Gruß Scratch

  6. Hallo,

    ich lese in meinem C Programm eine Datei zeilenweise ein per Funktion.

    Jetzt möchte ich das ganze in einem Array speichern und zurückgeben an main.

    Wie kann ich sowas den am besten realisieren?

    bisher die Funktion zum einlesen der Datei:

    void readFile(char *pFileName)
    
    {
    
    	FILE *pFile;
    
    	char buffer[FILEROW];
    
    	int i;
    
    
    	pFile = fopen(pFileName,"r");
    
    	if(pFile != NULL)
    
    	{
    
    		i = 0;
    
    		while(fgets(buffer,FILEROW,pFile))
    
    		{
    
    			i++;
    
    			printf("Zeile\t%i:\t%s",i,buffer);
    
    		}
    
    		fclose(pFile);
    
    	}
    
    }

    Wie muss der Rückgabewert den sein?

    Bzw. wie kann ich die Zeilen statt direkt auszugeben in ein Array speichern und zurückgeben mit return?

    Gruß Scratch

  7. Hi,

    ich habe hier einen etwas älteren HP Server der jede Woche mal einfriert.

    Da der Server aber nach dem Reboot sehr gut läuft glaube ich nicht das es am Linux liegt.

    Eines hab ich jedoch entdeckt

    WARNING:  Kernel Errors Present
    
       hda: set_drive_speed_status: error=0xb4
    
       hda: set_drive_speed_status: status=0x51 { DriveReady SeekComplete Error }

    Könnte es daran liegen?

    Kennt jemand diesen Fehler?

    Danke!

    Gruß Scratch

  8. Hi,

    ich hab hier ein ganz komisches Problem.

    ich habe mehrere Linuxrechner die alle eine Freigabe eines Windows 2000 Rechners mounten sollen.

    Es geht bei allen bis auf einem. Dort kommt folgende Meldung:

    22679: session setup failed: ERRDOS - ERRnoaccess (Access denied.)

    SMB connection failed

    Ich dachte erst die Freigabe sei auf gewisse Rechner beschränkt oder auf eine gewisse Benutzerzahl, dem ist aber leider nicht so.

    Das Targetdir hat drwxr-xr-x und gehört root

    Die anderen Rechner können wie oben erwähnt die Freigabe problemlos mounten und unmounten.

    Jemand ne Idee?

    Gruß Scratch

  9. Ja Hallo, ich glaub ich hab nun eine super Lösung zusammengebaut.

    Sieht folgendermassen aus:

    #!/bin/sh
    
    
    dirname=`/bin/date +%Y-%m-%d`
    
    
    pastdirname=`/bin/date +%Y%m%d -d '7 days ago'`
    
    
    cd /backup/
    
    /bin/mkdir -p $dirname
    
    
    for dir in *
    
    do
    
    	dirtoint=`echo $dir | /bin/sed -e 's/[^0-9]//ig'`
    
    	if [ $dirtoint -le $pastdirname ]
    
    	then
    
    		/bin/rm -rf $dir
    
    	fi
    
    done

    Bei mir hats funktioniert, ich hoffe bei euch auch.

    Falls es noch jemand verbessern möchte oder einen Verbesserungsvorschlag hat einfach posten!!!

    Gruß Scratch

  10. Der Name an sich ist ja das Datum an dem der Ordner angelegt wurde.

    Das Skript sollte alle Ordner auslesen und vergleichen ob das Datum des Ordners kleiner gleich dem Datum heute() - x Tage ist.

    Damit hätte man eine gute Lösung!

    Ich mach mich gleich mal dran!

    Gruß Scratch

  11. Hi,

    also ... die unschöne aber leichte Variante:

    #!/bin/sh
    
    
    dirname=`/bin/date +%Y-%m-%d`
    
    
    cd /backup/
    
    mkdir $dirname
    
    
    dirname=`/bin/date +%Y-%m-%d -d '7 days ago'`
    
    rm -rf $dirname
    Problem ist hier wenn ein Ordner älter ist als die 7 Tage wird er nicht mehr angefasst. Sollte aber eigentlich nicht passieren ... die schönere Variante mit find. So wie sie momentan ist wäre sie zwar korrekt aber für die Praxis nicht gerade geeignet:
    #!/bin/sh
    
    
    dirname=`/bin/date +%Y-%m-%d`
    
    
    cd /backup/
    
    mkdir $dirname
    
    
    /usr/bin/find  . -ctime +168 -exec /bin/rm -rf {} \; -depth

    Problem hier ist das wenn eine Datei in dem Ordner angelegt wird verändert sich das Datum "last modified". Ich habe keine möglichkeit (weder mit mtime oder atime) gefunden das er wirklich das Datum nimmt an dem der Ordner erstell wurde.

    Evtl. kann mir da jemand helfen!

    Gruß Scratch

  12. Hallo,

    dieses Script erstellt mir täglich einen Ordner mit dem aktuellen Datum

    #!/bin/sh
    
    
    dirname=`/bin/date +%Y-%m-%d`
    
    
    cd /backup/
    
    
    mkdir $dirname

    Ich hätte aber noch gerne das es alle Ordner im Verzeichniss /backup/ löscht (inklusive Inhalt) die älter als 7 Tage sind.

    Kann ich date nutzen um das Datum vor 7 Tagen zu bilden (hab in der manpage nichts passendes gefunden)?

    Gruß Scratch

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...