From f2f3582b16a9a8fe203fbbc1eb1601be40e3ac64 Mon Sep 17 00:00:00 2001
From: Felix Moser <felix.moser@informatik.hs-fulda.de>
Date: Fri, 7 Feb 2025 14:31:56 +0100
Subject: [PATCH] fixedStructure

---
 Processes/cpu_freq   | Bin 16424 -> 16608 bytes
 Processes/cpu_freq.c |  60 ++++++++++++----------
 Processes/cpu_temp   | Bin 16424 -> 16608 bytes
 Processes/cpu_temp.c |  63 ++++++++++++++---------
 main                 | Bin 16224 -> 16440 bytes
 main.c               | 117 +++++++++++++++++++++++++++++++++----------
 6 files changed, 163 insertions(+), 77 deletions(-)

diff --git a/Processes/cpu_freq b/Processes/cpu_freq
index 69d08e6decf81aeefd3bc03d3d19fab205cde805..9b1a03b74468ef8dd78a4c76a83a75ea1ba86c17 100755
GIT binary patch
delta 3469
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
PpM28Zobmr;MhA5O>NaC^

delta 2949
zcmaFR$he|`ae{=<0YL^ZZ~&7G3>g*^wU%+M;DB&fa7?_V$JNUM;q|gi7Gl(syub+I
z!e|Bo2%mBCL`Hee4NMT;j>(OT;(`Ub5MF^Tl%Bkj@x0&(1qcsLPwr%jS4@DaO@OL}
z(F>p^E||>8oG&8ecK)xbpI#lWYGZ4oNfOtZ>5hDpdzdv8Kpp|Pj16pdBbWq<ffyH4
z&*e_u$RxvPG5I62IOD|0g{=CF2_W|51*|NSzc7n1%7A$dEC!5GVAci}3C6XPAF_xu
z8c!Bv)o0WNi86|U$vt3kugMEp#YGs>(o;){8H)1?iZb&`(ijR#ONu8yWtG=WEXmJd
zh>y?7OiGR~E=epZiO)^U%wvd;Pp(LePs_|p%*m`uWk^fT$uCZ2nC#A0G5G+SoHru_
zGswXV3=AMv8Uq6?bQwf4GkF;pSQrYRVx>}<oD2-i3{_D6mWk8Y7#Nrs+MxOqCOfi=
z3uZtA6B?lm36lfa<tKNrhcF6EzRNB?`3^hJWDgD=UYM;Q%?*<cIm9PdaPaW5g1AsT
zVR9me_~aEFJiP2s5fHUt@<a~t$u~H7csW5_DBdvnAcy#54o)6k9;gV2IxzVohxlX*
zP99!95EqIsOjhI+-z*~<!9GbqiQP$`f#JWZ%VbS~)5-r;|LHL>r18tUFfe@Pm;3c!
zH4lxShQ^OW<A<T~{m}Sslf?ydC$k8N2XrwpF#H$&tjoagB~6cCz6I<!k6v3zJq8Ak
zUREIxW%;8-)T5jAnl1x_N9%zS&i@bi<r_c>4?}5>UfY)-$zIb(le2|n7?)1&5R%he
z3QE_d+MyoJwoM?WN9WTL9*=I@HeCjW7n%S5|9_G4|NsAEthJNR3#rx{a4;~WcyzO<
zYA`S`cyzk{Fg)PV%WB07;<VoQ{{O#6H-zdHjRp%|^XNSOV$;9>|2;ZeAAsbW_kt*f
zQW3bm<1aq_{r~@^10w^2NB2~atVeI_hwuOY?_*#AnS1<&6G(sS0sfZye;{iivLJ)4
z{{8=-#{d4nXAgd@1E2W?cyoC{kr8+BGrwT#h3{a=OP~3prh?fX{B@T=M*sf*Kh1+b
z?~q5Y=ouac2ADNFK>72<_P=0Vw?Feo&4uZ@0a6a~X#D~nu!|r{YybZL@6pS;7%bNM
z0_3}HFtrb4l1Jz99iZTUvFz{v|DCN@zW@K<ycb0NFBSCYWo-cKI{sqC-~az#dwTTt
ze)#?We>Yg!E{MO+bsm55>JLn?^Y{zhzcK&+zvlPoWi5hg-tz|>;@~jrJpSS=nCto@
z#X}nsLnW*)PX77-|K#D%{BplSJvyI4T%`B!|Nqxt7(hWK_sgUC4Tneb5st%~KPtv^
zPd>mTGD(4RvZR7}y=zfXevv|cL26!RUb;eBW=<-DY8r!cK&V1mQEFjnYF=`sm4a%T
zg1bi*7lVFDZh?M5W<hF5c|OS73=9lziJ3X6DGDX|U^5gzk_si|`3jkN3Pq`jDe=h#
zrSWi+7$CNRB%rq0rGm{-De+{KX12CrU|;|ho)Pc={|6N^8Xx}upTWSuVDaJq{|yWb
z3_m{n{~y7?!0_<n|Nkc#7#J2#7FE<{oH5x^QJnR`yZ`?$OpaAlX6%^Us3`8)@c#e*
z17O1;gbV`%Lk|N3gW$*i{||uT&XrG~jmeppjd?pG4?72g1Oo%Z8U_Z2ji3Ji7XfL3
z$wPvyfYU;9fe=WXfgu4(gG>R5q)pD$l^1LP>tbM#1PL)PFeFT#sVmQzF?px1K4Zt^
zm%8$d*Cuo7=?f;<Lli*k6b6OKo_g|%9qbTMD8+CB6b=jw46su3z~oLnd&Z8*C-vlc
z<Dhas|NqZtn4IV!KDmI?g|T3Apnmz}bWQ^%4u{D?2J<vO!0H}|$qb+>kBLEmK>_M~
zs4#=^<bwv{lRp@6ND4sfV3@~3!Igj*L&ju5LvgtGVfs42vZ4$LlN}A!8HFbY8p<+@
zFr1mZ(@@<L6!MG=;ta4_7pCVVm?6vnt9QX%1_p*ZV6!9`V1WY@{{*h>_$NCWiA!!`
zWMEJL1uxW<Fg4nf7aEB(+JHz&KSoe>CCLEu2~15WST=)^fkB8#kO3A|FxfniEMqsA
z>;#ixU~(Ral-vL{lL5`%y&zXHo|!z+SiJrwBLjmVgAmApU_+tp6^0jJy;2MkXnMDS
zT*4s00BiiHfpsx3yoIVqcmGeQ`b=mdgHjCtz~T&(mm3K(3QR6E5@+NGlZulSO=PtN
z7*;~#8l2)87#Q4{7#IYZFvBN!@<tPJ#@xvdO~eH|m_VV#0}4opt0pU&?wtJFv{De%
zvT$(s@pN*IH_|iGGi8|EXf8at)J%Tzax?$QoaW^+psbCS=i}o;e4XQ6{ahw5V3VDE
z+FWt-fAc8D%?XwYjEpLi8?EdaH%vZgr7ze4t?FU)waJXu`hu{u4x?2jJ6h{=c0hAL
z$K*<Db3s^MfzbyhAGFpNgykq0tuUF<rk?S_<VG8Pt`E=#;|GDsyKKw^8DKdDN*|ca
zXsZuzn8M;{FVkcvTRkpV;%N|>TxILVcw+KFTYXMgdOk7vr>(glhax24VDyQ}j&}N-
z3DAa6!sJRjb52;ZC}Z+YJ9AE0J}H>|)6N`TL?q}#%vmtm(cYd>U~;3qz91}R2pB-*
zI3_n*%1?e^FTp4<`KP_Tr~_2I0h$D585kIZCi^;Qa~?2(=;)i==wQz1H+iRnIsi|P
B{b2wA

diff --git a/Processes/cpu_freq.c b/Processes/cpu_freq.c
index b66a816..6efd32c 100644
--- a/Processes/cpu_freq.c
+++ b/Processes/cpu_freq.c
@@ -1,50 +1,58 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
-#include <sys/stat.h> //for pipes
+#include <sys/stat.h>
 #include <fcntl.h>
+#include <string.h>
 
-void read_cpu_frequency()
+static const char *PIPE_TWO = "/tmp/pipeTwo";
+
+static void read_cpu_freq_and_write(int fd)
 {
     FILE *file;
     char buffer[1024];
     char *freq_path = "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq";
 
     file = fopen(freq_path, "r");
-    if (file == NULL)
-    {
-        printf("Error opening file\n");
+    if (!file) {
+        perror("Failed to open CPU freq file");
         return;
     }
 
-    if (fgets(buffer, sizeof(buffer), file) != NULL)
-    {
+    if (fgets(buffer, sizeof(buffer), file) != NULL) {
+        // CPU frequency in kHz -> in GHz umrechnen
         float freq = atol(buffer) / 1000000.0f;
-        char message[1024];
-        snprintf(message, sizeof(message), "%f", freq);
-        printf("CPU frequency: %f GHz\n", freq);
-
-        //write pipe
-        const char *pTwo = "/tmp/pipeTwo";
-        int vTwo = open(pTwo, O_WRONLY);
-        if (vTwo == -1)
-        {
-            perror("Failed to open pipe two in read_cpu_frequency");
-            return;
+        char message[128];
+        snprintf(message, sizeof(message), "%.3f", freq);
+
+        ssize_t written = write(fd, message, strlen(message) + 1);
+        if (written < 0) {
+            perror("write to pipeTwo");
+        } else {
+            printf("Wrote CPU freq: %s GHz\n", message);
         }
-        write(vTwo, message, sizeof(message));
-        close(vTwo);
-    }
-    else
-    {
-        printf("Error reading file\n");
+    } else {
+        fprintf(stderr, "Error reading CPU freq\n");
     }
+
     fclose(file);
 }
 
-int main(void) {
+int main(void)
+{
+    // Named Pipe einmal öffnen
+    mkfifo(PIPE_TWO, 0666);
+    int pipeFd = open(PIPE_TWO, O_WRONLY);
+    if (pipeFd == -1) {
+        perror("Failed to open pipeTwo for writing");
+        return 1;
+    }
+
     while (1) {
-      read_cpu_frequency();
+        read_cpu_freq_and_write(pipeFd);
+        sleep(1);
     }
+
+    close(pipeFd);
     return 0;
 }
diff --git a/Processes/cpu_temp b/Processes/cpu_temp
index fa369854b5434e2ac46e93909ca2ec7f492f2e4e..b7e02c500a2f8157b5ee3a05791e4829aada9488 100755
GIT binary patch
delta 3403
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
J|H+IF>HuP3O#T1>

delta 2864
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

diff --git a/Processes/cpu_temp.c b/Processes/cpu_temp.c
index 801a433..9ff26c6 100644
--- a/Processes/cpu_temp.c
+++ b/Processes/cpu_temp.c
@@ -1,50 +1,63 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
-#include <sys/stat.h> //for pipes
+#include <sys/stat.h>
 #include <fcntl.h>
+#include <string.h>
 
-void read_cpu_temp()
+static const char *PIPE_ONE = "/tmp/pipeOne";
+
+static void read_cpu_temp_and_write(int fd)
 {
     FILE *file;
     char buffer[1024];
     char *temp_path = "/sys/class/thermal/thermal_zone0/temp";
 
     file = fopen(temp_path, "r");
-    if (file == NULL)
-    {
-        printf("Error opening file\n");
+    if (!file) {
+        perror("Failed to open CPU temp file");
         return;
     }
 
-    if (fgets(buffer, sizeof(buffer), file) != NULL)
-    {
+    if (fgets(buffer, sizeof(buffer), file) != NULL) {
         long temp = atol(buffer) / 1000;
-        char message[1024];
+        // z.B. "42\n" => 42° C
+        char message[128];
         snprintf(message, sizeof(message), "%ld", temp);
-        printf("CPU temperature: %ld C\n", temp); // todo: print message instead of temp?
-
-        // write pipe
-        const char *pOne = "/tmp/pipeOne";
-        int vOne = open(pOne, O_WRONLY);
-        if (vOne == -1)
-        {
-            perror("Failed to open pipe one in read_cpu_temp");
-            return;
+
+        // Schreiben, aber NICHT den FD schließen.
+        // Nur so viele Bytes schreiben, wie tatsächlich gebraucht werden.
+        ssize_t written = write(fd, message, strlen(message) + 1);
+        if (written < 0) {
+            perror("write to pipeOne");
+        } else {
+            printf("Wrote CPU temp: %s C\n", message);
         }
-        write(vOne, message, sizeof(message));
-        close(vOne);
-    }
-    else
-    {
-        printf("Error reading file\n");
+    } else {
+        fprintf(stderr, "Error reading CPU temp\n");
     }
+
     fclose(file);
 }
 
-int main(void) {
+int main(void)
+{
+    // Named Pipe einmal öffnen (Blockierend)
+    // Der mkfifo-Aufruf sollte idealerweise vorher im Setup passieren
+    // Falls sie nicht existiert, wird sie erzeugt
+    mkfifo(PIPE_ONE, 0666);
+    int pipeFd = open(PIPE_ONE, O_WRONLY);
+    if (pipeFd == -1) {
+        perror("Failed to open pipeOne for writing");
+        return 1;
+    }
+
     while (1) {
-      read_cpu_temp();
+        read_cpu_temp_and_write(pipeFd);
+        sleep(1);
     }
+
+    // Nie erreicht im Beispiel, weil while(1)
+    close(pipeFd);
     return 0;
 }
diff --git a/main b/main
index d620ed2b993c96b62e0c8411c7c773dd8a1ad47e..98261929dd7adb1a4010b1d036332b20244b822a 100755
GIT binary patch
delta 4066
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

delta 2787
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
C8m0mO

diff --git a/main.c b/main.c
index fb29f7d..8c6a45d 100644
--- a/main.c
+++ b/main.c
@@ -1,39 +1,104 @@
 #include <stdio.h>
 #include <stdlib.h>
-#include <sys/stat.h> //for pipes
-#include <fcntl.h>
 #include <unistd.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <string.h>
+#include <errno.h>
 
-int main(void) {
-    // create and open pipes
-    const char *pOne = "/tmp/pipeOne";
-    mkfifo(pOne, 0666);
-    int vOne = open(pOne, O_RDONLY | O_NONBLOCK);
-    if (vOne == -1)
-    {
-        perror("Failed to open pipe one in main");
+static const char *PIPE_ONE = "/tmp/pipeOne";
+static const char *PIPE_TWO = "/tmp/pipeTwo";
+
+int main(void)
+{
+    // mkfifo() nur ausführen, wenn die Pipes noch nicht existieren,
+    // bzw. Fehler ignorieren, falls schon existiert:
+    if (mkfifo(PIPE_ONE, 0666) < 0 && errno != EEXIST) {
+        perror("mkfifo pipeOne");
+        return 1;
+    }
+    if (mkfifo(PIPE_TWO, 0666) < 0 && errno != EEXIST) {
+        perror("mkfifo pipeTwo");
         return 1;
     }
 
-    const char *pTwo = "/tmp/pipeTwo";
-    mkfifo(pTwo, 0666);
-    int vTwo = open(pTwo, O_RDONLY | O_NONBLOCK);
-    if (vTwo == -1)
-    {
-        perror("Failed to open pipe two in main");
+    // Beide Pipes blockierend öffnen
+    int fdOne = open(PIPE_ONE, O_RDONLY);
+    if (fdOne == -1) {
+        perror("open pipeOne for reading");
         return 1;
     }
 
-    // read pipes
-    char mOne[1024] = {}; // for now only sending char with the pipe
-    read(vOne, mOne, sizeof(mOne));
-    printf("value one received: %s\n", mOne);
-    close(vOne);
+    int fdTwo = open(PIPE_TWO, O_RDONLY);
+    if (fdTwo == -1) {
+        perror("open pipeTwo for reading");
+        close(fdOne);
+        return 1;
+    }
+
+    // Dauerhafte Lese-Schleife
+    while (1) {
+        char bufOne[128] = {0};
+        char bufTwo[128] = {0};
+
+        // =========== Lesevorgang PipeOne ===========
+        // read() kann blockieren, wenn noch keine Daten da sind,
+        // da wir blockierendes I/O verwenden.
+        // Wenn die Schreibseite offen bleibt, kommen periodisch neue Daten.
+        ssize_t bytesReadOne = read(fdOne, bufOne, sizeof(bufOne));
+        if (bytesReadOne > 0) {
+            // Gültige Daten -> ausgeben
+            printf("PipeOne CPU Temp: %s °C\n", bufOne);
+        } else if (bytesReadOne == 0) {
+            // EOF -> Schreibseite hat geschlossen
+            // -> ggf. Pipe erneut öffnen
+            printf("PipeOne closed by writer. Reopening...\n");
+            close(fdOne);
+
+            // Neu öffnen
+            fdOne = open(PIPE_ONE, O_RDONLY);
+            if (fdOne == -1) {
+                perror("Reopen pipeOne");
+                break;  // oder return 1;
+            }
+        } else {
+            // bytesReadOne < 0 => Fehler
+            if (errno == EINTR) {
+                // Signal unterbrochen, einfach weiter
+                continue;
+            }
+            perror("read pipeOne");
+            break; // oder return 1;
+        }
+
+        // =========== Lesevorgang PipeTwo ===========
+        ssize_t bytesReadTwo = read(fdTwo, bufTwo, sizeof(bufTwo));
+        if (bytesReadTwo > 0) {
+            printf("PipeTwo CPU Freq: %s GHz\n", bufTwo);
+        } else if (bytesReadTwo == 0) {
+            printf("PipeTwo closed by writer. Reopening...\n");
+            close(fdTwo);
+            fdTwo = open(PIPE_TWO, O_RDONLY);
+            if (fdTwo == -1) {
+                perror("Reopen pipeTwo");
+                break;
+            }
+        } else {
+            if (errno == EINTR) {
+                continue;
+            }
+            perror("read pipeTwo");
+            break;
+        }
+
+        // Kurze Pause, damit CPU-Last nicht durch
+        // Dauerschleife hochgetrieben wird
+        usleep(200000); // 200 ms
+    }
 
-    char mTwo[1024] = {};
-    read(vTwo, mTwo, sizeof(mTwo));
-    printf("value two received: %s\n", mTwo);
-    close(vTwo);
+    // Sollte man jemals aus der while(1)-Schleife ausbrechen:
+    close(fdOne);
+    close(fdTwo);
 
     return 0;
-}
\ No newline at end of file
+}
-- 
GitLab