zitat: "Anstatt der Funktionen read() und write() verwendet man mit UDP-Sockets das Funktionenpaar recvfrom() und sendto() zum Nachrichtenaustausch." (Zahn: Unix-Netzwerkprogrammierung mit Threads, Sockets und SSL, 2006 Springer-Verlag Berlin Heidelberg, S. 206)
alle klarheiten beseitigt?
@manni66 und das mit der Abfrage für die Tage wäre dann ca so:
(ich brauch nur die Ausgabe von den Dateien, um das Datumsformat an diese anpassen zu können (glaube ich :D))
/*Ausgabe Zeit*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
time_t ltime;
double diff,
/*Unix-timestamp*/
int currentTime = time(<ime);
/*Datum je Datei abfragen*/
int data_time;
/*Vergleich mit aktuellem Datum*/
/*wenn > 30, jeweilige Dateien als Liste ausgeben*/
do {
printf("%s\n", dir.cFileName);
} while
(diff = difftime(currentTime, data_time) > 30);
return 0;
}
@Mechanics sagte in Speicherzugriffsfehler (Speicherabzug geschrieben):
In Qt (leider) auch. Wobei ich das jetzt auch halb so dramatisch finde. Qt kümmert sich zumindest halbwegs richtig um die Speicherverwaltung.
Das macht Gtkmm i.d.R. auch, und wenn man den GtkBuilder nutzt, kümmert sich Gtkmm um faktisch alles. Aber die meisten Tutorials basieren nicht auf Glade + GtkBuilder sondern auf GUI per Hand.
@Swordfish sagte in Speicherzugriffsfehler (Speicherabzug geschrieben):
Das sind beides Dingstis, die ihre eigenen Smartpointer haben. Das ist nicht worauf ich hinauswollte.
Wie ich an anderer Stelle schon aufzeigte, kann man bestimmte Dinge nicht mit SmartPointer lösen. NUMA, das neue OpenMP 5.0, … zeigen, dass man in C++ noch immer LowLevel Speicheranforderungen durchführen muss, und dazu auch keine angepassten C++ Allokatoren nutzen kann. Die haben bei NUMA UB, wenn man sie zusammen mit den Container aus der Standard Library nutzt. Ja, das Problem wäre von Seiten des ISO-Kommittes lösbar.
P.S. Seit OpenMP 4.0 ist es möglich C++ mit OpenMP zu nutzen, um Programme für GPUs zu schreiben. Mit OpenMP 5.0 ist die Laufzeitbibliothek speziell für die Speicherverwaltung deutlich erweitert worden, aber die API ist reines C. Dadurch können die Speicheranforderungen optimiert werden.
@Wade1234
Jo; ich hätte eben nen expliziten Vaterprozess gebraucht, der nur genau das kann, was service schon kann: stoppen; starten; restarten; ... Der stoppt dann dienste, führt dann config_reader (bei bedarf) aus und startet die wieder.
Das wollte ich nicht und habe jetzt 2 dienste:
config_reader - type oneshot
Z - type simple + restart
config_reader macht das, was er soll und restartet danach dann Z (und die anderen richtigen dienste)
Hat auf einmal geklappt. Hab oft versucht und fast immer war irgend ein undefined behavior. Mal kam dos-style mal 256 Farben. Mal Startet deutsch mal englisch...farukt!!
@thomasfischer25 sagte in Linux c Socket erholt sich nicht nach connect und errno == EINTR:
Hi Leute,
ich habe mir eine Funktion geschrieben, mit der ich zwischen meinem Raspberry Pi und einer Java Applikation auf meinem PC kurze Befehle austausche.
falsches forum?
Dann bekomme ich beim Aufruf von connect den Fehler EINTR in errno.
du meinst, der raspberry pi soll sich zu deinem pc verbinden? wie kommst du auf sowas? also es geht bestimmt, aber es hört sich merkwürdig an.
Soviel ich gelesen habe, soll man mittels select "warten" und anschließend den Verbindungsaufbau via connect erneut versuchen.
wo hast du das denn gelesen? man ruft connect auf und wenn das fehlschlägt, wartet man eine gewisse zeit und ruft danach erneut connect auf. wenn das programm nicht stehen bleiben soll, wenn keine daten empfangen wurden, dann erstell dir den socket als nonblock und werte den rückgabewert von read aus.
Also scheint irgend etwas hängen zu bleiben. Wie kann ich mit meinem c Programm wieder lösen?
wie wäre es damit, ein vernünftiges buch zu lesen und es dann richtig zu machen? literaturempfehlungen: "systemprogrammierung unter linux/unix", "unix-netzwerkprogrammierung mit threads, sockets und ssl"
@tntnet sagte in shell befehl über ssh ausführen:
@worst_case
Ich frage mich, was Du eigentlich machen willst.
Interessant ist nicht nur der Sinn der einen Zeile, sondern die Absicht hinter dem Gesamtscript. Fragen zu ungewöhnlichen Scriptingmustern, wie hier, kommen fast immer dann wenn ein unerfahrener Scriptschreiber sich in einem selbst ausgedachten Lösungsweg verfährt, weil er sich einer viel naheliegenderen, einfacheren Lösung gar nicht bewusst ist.
@worst_case sagte in shell zusammenstellen von variablen:
Wie kann ich die Steuerzeichen herausfiltern ?
Das ist die falsche Frage. Die richtige Frage ist, wieso das überhaupt da drin ist. Dann die Ursache abstellen. Dafür ist besonders die zweite Frage von @firefly interessant.
@wade1234 sagte in Programme von einem Daemon starten:
aber du kannst programme nicht einfach mal so mit einem kontrollterminal verbinden
Man kann ein geöffnetes tty (sowas wie /dev/pts/0) mit open öffnen. Die Berechtigungen müssen natürlich passen.
neoexpert schrieb:
Aber so grob denke ich dass Microkernel eine viel bessere Lösung sind als monolitische.
Die heissen ja micro weil die sehr klein sind. Also nur grundlegende funktionen haben. Das ist doch geil - man kann dann darauf aufbauen - modulares betriebsystem.
Linux dagegen ist ein dickes ding, dass sehr kompliziert ist: weil eben alles darein kompiliert ist. Das ist doch sehr schwer zu überblicken?
Oder so ähnlich?
Siehe Antwort von Tobiking. Mittlerweile ist die Meinung von Tanenbaum auch ziemlich überholt. Man könnte da zumindest noch drüber streiten, aber ich würde zumindest auf keinen Fall behaupten, dass Linux "dieses Problem hat". Linux existiert erstmal völlig unabhängig von diesen theoretischen Diskussionen, und wenn du behauptest, das hätte irgendwelche Probleme, musst du das schon sehr viel konkreter begründen.
Auch irgendwelche Behauptungen, irgendetwas wäre geil, bringt keinen weiter. Auch Linux ist sehr modular aufgebaut. Ob das in einem Prozess läuft oder in mehreren, merkst du als Entwickler erstmal überhaupt nicht. Da wäre nichts einfacher zu programmieren, nur wenn man das in mehrere Prozesse aufteilen würde. Im Gegenteil, das wäre vermutlich komplizierter, siehe z.B. Micro Services. Und da die jetzige Lösung gut und stabil genug ist, hätten Micro Kernel nur irrelevante theoretische Vorteile zu bieten, bei vielen Nachteilen.
Das ist jetzt auch etwas übertrieben formuliert. Ich bin auch kein OS Entwickler (habe mich damit aber etwas beschäftigt und auch Kernel Modulle programmiert) und dementsprechend auf kein Experte auf dem Gebiet. Ich wollte damit nur sagenn, dass irgendwelche plumpen Aussagen wie "geil weil modular" ohne tieferes Verständnis völlig sinnlos sind.
Am einfachsten wäre es wohl wenn du die PID's, die dir fork() zurückgibt einfach zwischenspeicherst.
Andernfalls musst du im proc-Dateisystem rumwühlen.