Auch der locale Verbindungsaufbau mittels openssl s_client -connect localhost:443 dauert über 10 Sekunden.
Einfach mal an vielen Stellen Logging reinknallen und eingrenzen was überhaupt so lange dauert.
10 Sekunden sind ja extrem viel, da sollte man über die Timestamps im Logfile schon gut sehen können wo die Zeit draufgeht.
Hallo!
Hat schon jemand Erfahrung mit der Synchronisation einer App, die auf Android
oder Raspbian OS läuft? Nicht über WLAN, Bluetooth oder LTE/ UMTS, wenn
möglich bei Android über USB und beim Raspberry auch oder über einen anderen
freien seriellen Port. Auch nicht über LAN, da ein gewöhnliches Handy ja keine
RJ-45 Kupplung hat und auch ein LAN-Hub zzgl. Kabel sicher teurer ist, als
ein USB-Hub, abgesehen vom wohl höheren Programmieraufwand über TCP/IP(?)
Datenmäßig möchte ich nur ein Steuersignal an eine gleiche App übergeben,
ach so, ja in C oder C++.
Grüße und vielen Dank für jeden Tipp!
Micha
Hallo!
Wer weiß, wie man auf dem Android-System eine App zwischenschalten kann, um die Audio-Ausgabe zu editieren? Genauer, das Signal welches an den Klinkenausgang
bzw. an die internen Lautsprecher im Gerät oder per HDMI gesendet wird, in der Amplitude (16 Bit stereo, bei 44,1 kHz) linear und logarithmisch zu verändern. Gibt es dazu evtl. C-Code hier im Forum oder im Netz?
Viele Grüße und Danke!
Micha
Hi!
Leider verfüge ich nur über Audio-Erfahrung mit Windows und WAV.
Gibt es hier oder an anderen Stellen (im Netz/ Print) Beispielcode, um unter
Linux (Raspberry PI + Hifi-Audioinferface) ein 44.100 kHz 16 Bit Stereo Signal
einzulesen, die Lautstärke linear oder logarithmisch (Kompression) zu verändern
und wieder auszugeben? Respektive kennt sich jemand damit aus und kann mir dabei
helfen? Ich habe auch gelesen, dass in Bezug auf USB-Audio-Interfaces, das
Linux entsprechend konfiguriert werden muss, damit es keine Knackser bei der
Wiedergabe gibt(?) Wenn dann noch jemand eine Idee hat, wie man den Volume-
Parameter analog regeln könnte, würde mich das sehr freuen.
Grüße und Vielen Dank für jeden Tipp!
Micha
Hallo Dachschaden,
ok ich habe das soweit kapiert! Vielen, vielen Dank für deine Hilfe!
Hätte nicht gedacht, dass ich so schnell Hilfe mit so einem konkreten Problem bekomme!
Gruß und ein schönes Wochenende ,
Meho
Ah ja, klar. Hätten wir vorher auch schon sehen können. "-l" und "user" sind ja zwei Parameter, nicht nur einer, dh. die musst du auch entsprechend and execlp weiterreichen.
Wobei ich persönlich einfach die "user@hostname"-Syntax verwenden würde, dann sparst du dir zwei Parameter.
Die Batchmode-Option brauchst du nicht unbedingt, aber du möchtest vmtl. lieber, dass der Aufruf fehlschlägt, wenn der Key nicht funktioniert und nicht dass es einen Fallback auf Passwort-Auth gibt. Dafür ist Batchmode praktisch.
Danke für den Tipp!
Das Ding sieht auf jedenfall kleiner und übersichtlicher aus als andere, .... aber gibts sowas auch in noch kleiner ^^ (wie gesagt: button und so primitive sachen reichen). Ich will nur wissen wie sowas im inneren Aufgebaut ist. Also ob die ganzen Buttons in ner Liste gespeichert und dann auf die Koordinaten abgefragt werden, etc. Oder wie funktoniert das mit der Xlib NextEvent-Loop. Sowas halt. Bei der appgraph Sache ist mir das noch alles viel zu komplex, weil die halt 10 Objekte haben + Bilder-Verarbeitung + ...
SeppJ schrieb:
Wie wäre es, den Cache zentraler zu organisieren? Also so etwas wie eine Datenbank für deinen Dienst. Dann hast du auch keine der anderen möglichen Probleme, die du anscheinend noch gar nicht gefunden hast:
-Funktioniert auch ohne Schreibrechte
-Kein Zumüllen der Verzeichnisse mit deinen Cachedateien
Der Ansatz hat leider zwei Probleme:
- Datenbanksoftware würde wieder weitere Abhängigkeiten und Konfiguration bedeuten, die möglichst vermieden werden sollen. Wir wollen Komplexität minimieren und sie nicht verstecken.
- Wenn Daten über Pipe oder Socket angefragt werden, würden wir die Daten schon gerne Zero-Copy schreiben. Selbst, wenn ich eine Datenbanksoftware konfigurieren würde, die mir garantiert, dass zumindest beim Selecten des Datensatzes direkt das File-Mapping zur Verfügung steht (bin mir nicht mal sicher, dass es sowas gibt) - habe ich später beim write(2) -Call wieder den Flaschenhals, dass der Kernel die Daten in seinen eigenen Speicher kopiert. Und das sind (n + x) * y Bytes, wobei y zwischen 10.000 und 10.000.000 variiert und (n + x) mindestens über 100 Zeichen pro Eintrag sind (wir also relativ schnell in den Gigabytebereich für eine einzelne Anfrage kommen können) - die dann sinnloserweise hin und zurück kopiert werden müssen.
Die Cachedateien kann man auch direkt in einem Verzeichnis in /var/tmp ablegen. WO man die jetzt sucht, ist Jacke wie Hose - notfalls halt mit der Device-ID und der Inode des Verzeichnisses im Namen. Das Problem der Schreibrechte ist damit auch weg - wobei die man schon eigentlich haben will, wenn man neue Dateien ablegt, aber das ist ein minimales Problem.
Ich glaube, er meint, dass eine spezielle Funktion im Programm gewissen Speichervorgaben entsprechen soll. Aber der Rest des Programms darf währenddessen machen, was er möchte. So nach dem Motto "Wie viel Speicher verbraucht die Druckfunktion in meinem Browser abhängig von der Webseite?". Das ist, insbesondere angesichts der sonstigen Vorgaben (kein Zugriff auf den Code, usw.), meiner Ansicht nach unprüfbar, aber ich wollte keine negative Antwort geben, für den Fall, dass doch jemand eine geniale Idee hat.
depream schrieb:
Liege ich bei der Aufgabe eigentlich in der richtigen Spur?
Bis jetzt ist es ja nur ein leeres Gerüst.
Was mir vor allem fehlt, ist erst einmal eine vernünftige Verwaltung der Prozesse. Du musst die Daten der Prozesse irgendwo speichern, sonst kannst du sie schließlich nirgendwo verarbeiten. Es könnte nötig sein, dass du dein Programm dafür vollkommen umbauen musst.
ich verstehe nicht warum du am Anfang ein fork machst, dann die Schleife startest.
Anyway, den Exit-Status von wait zu bekommen, macht man mit dem WEXITSTATUS Makro
pid_number = wait(&status);
if(WIFEXITED(status))
printf("CHILD mit PID %d hat sich mit folgendem Exit-Status: %d beendet \n", pid_number, WEXITSTATUS(status));
else
printf("CHILD mit PID %d hat nicht normal über exit oder _exit beendet, Exit-Status unbekannt\n", pid_number);
}
siehe man: wait(2)
Das geht zwar auch, aber wenn es mit RPATH geht, ist das zu vorzuziehen.
Beim LD_LIBRARY_PATH muss man sonst beim Aufruf externer Programme aufpassen, ausserdem wird dann eben das Shellscript benoetigt was wiederum eine Shell benoetigt.
Kakarott schrieb:
hallo roflo, ja du hast recht, mir geht es darum neue Dinge zu verstehen. Natürlich suche ich zunächst im web aber man findet nun mal nicht zu allem eine Antwort vor allem nicht auf deutsch. Ich weiß zwar immer noch nicht warum die Datei nicht zu öffnen war aber jetzt weiß ich zumindest wie ich die Funktion richtig verwenden kann.
Suche nicht zunächst im Web. Im Web gibt es alles. Und das ist viel zu viel und didaktisch nicht sinnvoll aufgebaut.
Erwarte auch nicht hier im Forum didaktisch gute Beiträge, die eine bestimmte Funktion erklären. Dafür ist das Forum nämlich nicht da. Erklärungen zu Funktionen findest Du in einem guten Lehrbuch oder in der man-Page (z. B. "man 2 write"). Wenn Du die Erklärung nicht verstehst, meldest Du Dich hier und erzählst, was Du verstanden hast und wo es hakt. Dann sind hier viele Leute, die sich darum reissen, Dir zu helfen.
Und bitte keine "...Du hast keine Ahnung... sonst würdest Du mir helfen..." oder ähnliche formulierungen. Das demotiviert nicht nur den direkt angesprochenen sondern auch andere potentielle Helfer.
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (alle ISO-Standards) in das Forum Linux/Unix verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?
Dieses Posting wurde automatisch erzeugt.