Das heißt für mich, wenn in anstelle des Sockets ein seriellen Filedeskriptor nehmen will, reicht es nicht aus, den sockfd gegen z.B. fg zu tauschen?
Muss dann auch die usbip_send usw. umgeschrieben werden?
nman schrieb:
Meinst Du Pfade der Form /eins/zwei/drei ?
Genau das meine ich, aber ehrlich gesagt empfinde ich die Aufgabe als etwas skurril. Aber danke!
Kristallfee schrieb:
du hast in deinem Code den VariablenTyp MacAddress verwendet, welche header-Dateien muss ich einbinden um diesen Variablentyp zu verwenden?
CamelCase ist in den meisten (Netzwerk-)Standardlibraries eher unüblich, sieht eher nach einem simplen Byte-Array aus, das sich der User selbst definiert hat. Wahrscheinlich unsigned char oder so.
So ich habe schon ein Teil des Programms zu ende Programmiert.
Und zwar wird von einem als Argument übergebenem verzeichnis aus alle Unter verzeichnisse rekursiv durch sucht.
Nun habe ich ein Problem und zwar werden /.. und /. als unterverzeichnisse angenommen und deshalb wird die rekursion endlos.
Mein Programm ist folgendes:
#include <iostream>
#include <sys/types.h>
#include <dirent.h>
#include <sys/stat.h>
#include <string.h>
using namespace std;
void rekstat(char* name){
DIR *verzeichnis;
struct dirent *files;
verzeichnis=opendir(name);
struct stat buffer;
//rückgabe von d_type ist char und falls man es in int konvertiert und die rückgabe 4 ist, iste es ein verzeichnis
//falls 8 dann eine Datei
while(files = readdir(verzeichnis)){
if((files->d_type&DT_DIR)){//verzeichnis
char* tmp="/";
strcat(name,tmp);
strcat(name,files->d_name);
//rekstat(name);
}else{//datei
cout<<files->d_name;
cout<<" Datei "<<endl;
stat(files->d_name,&buffer);
cout<<(long long )buffer.st_size<<endl;
}
}
closedir(verzeichnis);
}
int main(int argc, char *argv[]) {
rekstat(argv[1]);
return 0;
}
Seit GDB7 gibt es STL-PrettyPrinter: http://sourceware.org/gdb/wiki/STLSupport
(hab auch mal angefangen PrettyPrinter für Boost zu basteln. Aber daran länger nichts mehr gemacht: http://github.com/ruediger/Boost-Pretty-Printer )
Nein nicht die Dateigrößen. Sondern die Bytes die übertragen werden sollen, sprich die Textlänge. Damit der Client weiß, wieviel er zu empfangen hat. Momentan fordert der Client einfach mal pauschal 1024 Bytes an. Das ist schon allein deswegen schlecht, weil die Dateinamen zusammen auch länger als 1024 Zeichen sein können. Außerdem kann der Client schon vorher zurück kommen, bevor er alle Namen empfangen hat.
Ich hab den Quelltext mal soweit angepasst und bei mir werden die Namen ohne Zugriffsfehler übertragen. Die Programme liefen beide in valgrind zur Überprüfung.
http://pastebin.com/d2b4NEhM
http://pastebin.com/sB7L6hBV
Yamakuzure schrieb:
Sollen die Daten soweit vernichtet werden, dass es auch mit professioneller Software unter Laborbedingungen nicht möglich ist, die Daten widerherzustellen, dann sind natürlich mehr Durchgänge empfehlenswert.
In den Wikipedia-Artikeln steht aber, dass genau das gerade eben nicht nötig ist bei halbwegs aktuellen Festplatten: http://en.wikipedia.org/wiki/Data_erasure#Number_of_overwrites_needed
Wenn man den psychologischen Faktor in Betracht zieht, dann sind natürlich mehrere Durchgänge nötig.
Okay, ich habs jetzt hinbekommen:
g++ `pkg-config --cflags opencv` -o test `pkg-config --libs opencv` ch2_ex2_1.cpp
Hab im obrigen Beipsiel das Input-File vergessen.
Vielen Dank für euere Hilfe!
Greez Tectu