diff --git a/.idea/OS.iml b/.idea/OS.iml deleted file mode 100644 index f08604b..0000000 --- a/.idea/OS.iml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..39f8b34 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 57bd749..75d5bb2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,4 +8,5 @@ SET(GCC_COVERAGE_COMPILE_FLAGS "-pthread") add_executable(OS - Lab5/ex4.c) + Lab6/agent.c + Lab6/agent.c) diff --git a/Lab6/agent.c b/Lab6/agent.c new file mode 100644 index 0000000..fc95658 --- /dev/null +++ b/Lab6/agent.c @@ -0,0 +1,36 @@ +#include +#include + +int main() { + /* + On startup, the agent program creates the file +/var/run/agent.pid and writes its PID into the file. It then reads +the contents of a file called text.txt, prints it on the console and +finally sleeps indefinitely + */ + FILE *file = fopen("text.txt", "w"); + FILE *filePid = fopen("agent.txt", "w"); + fputc(getpid(), filePid); + fclose(filePid); + fclose(file); + char pid_str[10]; + fgets(pid_str, sizeof(pid_str), file); + fclose(file); + + FILE *text_file = fopen("text.txt", "r"); + if (text_file == NULL) { + printf("Error opening text.txt\n"); + return 1; + } + + char c; + while ((c = fgetc(text_file))!= EOF) + printf("%c", c); + + fclose(text_file); + + printf("\nSleeping indefinitely...\n"); + while (1) + sleep(1); + return 0; +} \ No newline at end of file diff --git a/Lab6/controller.c b/Lab6/controller.c new file mode 100644 index 0000000..7d00d1b --- /dev/null +++ b/Lab6/controller.c @@ -0,0 +1,3 @@ +// +// Created by emil on 01.10.2024. +// diff --git a/Lab6/example1.c b/Lab6/example1.c new file mode 100644 index 0000000..d558c0e --- /dev/null +++ b/Lab6/example1.c @@ -0,0 +1,28 @@ +#include + +int main() { + /* + * Write a C program that prints “Hello world!” an infinite number +of times. +Run the program, and kill it by pressing (Ctrl+C). Which signal +did the process receive? Can we handle it? Can the process ignore +the signal? +Run the program, and kill it by pressing (Ctrl+\). Which signal +did the process receive? Can we handle it? Can the process ignore +the signal? In Ubuntu, set core dump size via ulimit -c +unlimited. The core dump file is in /var/lib/apport/coredump/. +Check the log file /var/log/apport.log for core dump file name. +Run the program in the background (&) and redirect stdout to a +file output.txt, kill the process by sending the signal “SIGTERM” +via “kill -s SIGTERM pid ” command. Can we handle the +signal? Can the process ignore the signal? Send the signal +“SIGKILL” if the program does not terminate politely. +30 / 58 + */ + + + while (1) + printf("Hello world!\n"); + + return 0; +} \ No newline at end of file diff --git a/cmake-build-debug/.ninja_deps b/cmake-build-debug/.ninja_deps index c3e25a2..95e53dd 100644 Binary files a/cmake-build-debug/.ninja_deps and b/cmake-build-debug/.ninja_deps differ diff --git a/cmake-build-debug/.ninja_log b/cmake-build-debug/.ninja_log index ead96b2..459d0ba 100644 --- a/cmake-build-debug/.ninja_log +++ b/cmake-build-debug/.ninja_log @@ -2,10 +2,32 @@ 1 59 1727194503928197251 CMakeFiles/OS.dir/Lab5/ex2-3.c.o 3ac11e55017104db 1 69 1727194450713397978 CMakeFiles/OS.dir/Lab5/ex2.c.o aaf388779ce03a6e 1 54 1727193068898104463 CMakeFiles/OS.dir/Lab5/ex1.c.o 87ce1149fbd620b +1 53 1727797041565849223 CMakeFiles/OS.dir/Lab6/example1.c.o 6be6e05f0bf8623a 1 81 1727191541519747212 CMakeFiles/OS.dir/Lab4/ex1.c.o fdfe48b329a854c3 1 50 1726585076082163985 CMakeFiles/OS.dir/main.c.o 597d2975f9346988 -1 31 1727195105069329767 build.ninja 102e4adb4b6285fe -59 91 1727194503984862096 OS 7e7768c095bc6d8a -1 36 1727195105069329767 build.ninja 102e4adb4b6285fe +1 32 1727798122261377224 build.ninja 102e4adb4b6285fe +54 100 1727797041615835169 OS 87096d11c57d1daa 0 63 1727195105082663185 CMakeFiles/OS.dir/Lab5/ex4.c.o 60daafb2653af2a5 -63 96 1727195105142663566 OS 5ac1e89d9f8b3dbb +2 36 1727796978102865786 CMakeFiles/OS.dir/Lab6/controller.c.o e3d69d5ce71c382d +1 77 1727798135878055008 CMakeFiles/OS.dir/Lab6/agent.c.o f04cc81de1844813 +77 120 1727798135954721726 OS d21dc05418483373 +0 51 1727798170544732035 CMakeFiles/OS.dir/Lab6/agent.c.o f04cc81de1844813 +51 95 1727798170594732034 OS d21dc05418483373 +1 58 1727798268007998305 CMakeFiles/OS.dir/Lab6/agent.c.o f04cc81de1844813 +58 95 1727798268064664903 OS d21dc05418483373 +1 60 1727798299751289808 CMakeFiles/OS.dir/Lab6/agent.c.o f04cc81de1844813 +61 103 1727798299811289723 OS d21dc05418483373 +1 58 1727798320507925611 CMakeFiles/OS.dir/Lab6/agent.c.o f04cc81de1844813 +58 99 1727798320564592190 OS d21dc05418483373 +1 56 1727798362207857032 CMakeFiles/OS.dir/Lab6/agent.c.o f04cc81de1844813 +56 95 1727798362264523600 OS d21dc05418483373 +1 57 1727798440361045239 CMakeFiles/OS.dir/Lab6/agent.c.o f04cc81de1844813 +58 94 1727798440417711794 OS d21dc05418483373 +1 58 1727798718513790447 CMakeFiles/OS.dir/Lab6/agent.c.o f04cc81de1844813 +58 93 1727798718570456989 OS d21dc05418483373 +1 59 1727798905596710944 CMakeFiles/OS.dir/Lab6/agent.c.o f04cc81de1844813 +59 93 1727798905656710811 OS d21dc05418483373 +1 57 1727798934466646963 CMakeFiles/OS.dir/Lab6/agent.c.o f04cc81de1844813 +57 94 1727798934523313503 OS d21dc05418483373 +1 58 1727798985353200771 CMakeFiles/OS.dir/Lab6/agent.c.o f04cc81de1844813 +59 93 1727798985409867312 OS d21dc05418483373 diff --git a/cmake-build-debug/Testing/Temporary/LastTest.log b/cmake-build-debug/Testing/Temporary/LastTest.log index 28fb3ad..2e83f8c 100644 --- a/cmake-build-debug/Testing/Temporary/LastTest.log +++ b/cmake-build-debug/Testing/Temporary/LastTest.log @@ -1,3 +1,3 @@ -Start testing: Sep 24 19:25 MSK +Start testing: Oct 01 20:02 MSK ---------------------------------------------------------- -End testing: Sep 24 19:25 MSK +End testing: Oct 01 20:02 MSK diff --git a/cmake-build-debug/build.ninja b/cmake-build-debug/build.ninja index aa70532..2cf37d5 100644 --- a/cmake-build-debug/build.ninja +++ b/cmake-build-debug/build.ninja @@ -49,11 +49,11 @@ cmake_ninja_workdir = /home/emil/CLionProjects/OS/cmake-build-debug/ build cmake_object_order_depends_target_OS: phony || . -build CMakeFiles/OS.dir/Lab5/ex4.c.o: C_COMPILER__OS_unscanned_Debug /home/emil/CLionProjects/OS/Lab5/ex4.c || cmake_object_order_depends_target_OS - DEP_FILE = CMakeFiles/OS.dir/Lab5/ex4.c.o.d +build CMakeFiles/OS.dir/Lab6/agent.c.o: C_COMPILER__OS_unscanned_Debug /home/emil/CLionProjects/OS/Lab6/agent.c || cmake_object_order_depends_target_OS + DEP_FILE = CMakeFiles/OS.dir/Lab6/agent.c.o.d FLAGS = -g -std=gnu11 -fdiagnostics-color=always OBJECT_DIR = CMakeFiles/OS.dir - OBJECT_FILE_DIR = CMakeFiles/OS.dir/Lab5 + OBJECT_FILE_DIR = CMakeFiles/OS.dir/Lab6 # ============================================================================= @@ -63,7 +63,7 @@ build CMakeFiles/OS.dir/Lab5/ex4.c.o: C_COMPILER__OS_unscanned_Debug /home/emil/ ############################################# # Link the executable OS -build OS: C_EXECUTABLE_LINKER__OS_Debug CMakeFiles/OS.dir/Lab5/ex4.c.o +build OS: C_EXECUTABLE_LINKER__OS_Debug CMakeFiles/OS.dir/Lab6/agent.c.o FLAGS = -g OBJECT_DIR = CMakeFiles/OS.dir POST_BUILD = :