Skip to content
Snippets Groups Projects
Commit 7ff95bef authored by Peter Gerwinski's avatar Peter Gerwinski
Browse files

Beispiele 2.12.2021

parent 7073d04f
Branches
No related tags found
No related merge requests found
Showing
with 365 additions and 2 deletions
No preview for this file type
...@@ -712,7 +712,7 @@ ...@@ -712,7 +712,7 @@
\end{frame} \end{frame}
\setlength{\pdfpageheight}{48cm} \setlength{\pdfpageheight}{49cm}
\begin{frame}[fragile] \begin{frame}[fragile]
...@@ -878,7 +878,7 @@ ...@@ -878,7 +878,7 @@
\end{frame} \end{frame}
\setlength{\pdfpageheight}{40.5cm} \setlength{\pdfpageheight}{45cm}
\begin{frame}[fragile] \begin{frame}[fragile]
......
#include <stdio.h>
#include <sys/wait.h>
#include <stdlib.h>
#include <unistd.h>
int main(void){
pid_t pids[10]; // Platz für 10 Prozess-IDs (die Kindprozesse)
int i; // Laufvariable
for (i = 0; i < 10; ++i) {
// Der Vaterprozess erzeugt nun einen Kindprozess,
// welcher unabhängig vom Vaterprozess mit der
// erneuten Ausführung des Programms beginnt.
// Ein Kindprozess erzeugt keinen Fork von sich selbst.
pids[i] = fork();
if (pids[i] == 0) {
// dann befinden wir uns in einem der 10 Kindprozesse
// Der erste Kindprozess wartet 10 Sekunden und jeder
// weitere Kindprozess wartet 1 Sekunde kürzer als der
// vorige.
sleep(10-i);
printf ("%d BRAINS! ", i);
exit(0); // Kindprozess erfolgreich beenden
}
}
//
// hier kommt nur der Vaterprozess vorbei
for (i = 0; i < 10; ++i){
// Der Vaterprozess wartet nun, bis der Reihe nach jeder
// seiner 10 Kindprozesse beendet ist. Leider wird auf das
// Kind mit der längsten Wartezeit zuerst gewartet. Obwohl
// die anderen Kinder längst erfolgreich beendet wurden,
// blockiert das erste Kind eine Bereinigung der Prozesstabelle
waitpid(pids[i], NULL, 0);
}
//
// while (1);
return 0; // Vaterprozess erfolgreich beenden
}
#include <stdio.h>
#include <sys/wait.h>
#include <stdlib.h>
#include <unistd.h>
int main(void){
pid_t pids[10]; // Platz für 10 Prozess-IDs (die Kindprozesse)
int i; // Laufvariable
for (i = 0; i < 10; ++i) {
// Der Vaterprozess erzeugt nun einen Kindprozess,
// welcher unabhängig vom Vaterprozess mit der
// erneuten Ausführung des Programms beginnt.
// Ein Kindprozess erzeugt keinen Fork von sich selbst.
pids[i] = fork();
if (pids[i] == 0) {
// dann befinden wir uns in einem der 10 Kindprozesse
// Der erste Kindprozess wartet 10 Sekunden und jeder
// weitere Kindprozess wartet 1 Sekunde kürzer als der
// vorige.
sleep(10-i);
printf ("%d BRAINS! ", i);
exit(0); // Kindprozess erfolgreich beenden
}
}
//
// // hier kommt nur der Vaterprozess vorbei
// for (i = 0; i < 10; ++i){
// // Der Vaterprozess wartet nun, bis der Reihe nach jeder
// // seiner 10 Kindprozesse beendet ist. Leider wird auf das
// // Kind mit der längsten Wartezeit zuerst gewartet. Obwohl
// // die anderen Kinder längst erfolgreich beendet wurden,
// // blockiert das erste Kind eine Bereinigung der Prozesstabelle
// waitpid(pids[i], NULL, 0);
// }
//
while (1);
// return 0; // Vaterprozess erfolgreich beenden
}
#include <stdio.h>
#include <sys/wait.h>
#include <stdlib.h>
#include <unistd.h>
int main(void){
pid_t pids[10]; // Platz für 10 Prozess-IDs (die Kindprozesse)
int i; // Laufvariable
for (i = 0; i < 10; ++i) {
// Der Vaterprozess erzeugt nun einen Kindprozess,
// welcher unabhängig vom Vaterprozess mit der
// erneuten Ausführung des Programms beginnt.
// Ein Kindprozess erzeugt keinen Fork von sich selbst.
pids[i] = fork();
if (pids[i] == 0) {
// dann befinden wir uns in einem der 10 Kindprozesse
// Der erste Kindprozess wartet 10 Sekunden und jeder
// weitere Kindprozess wartet 1 Sekunde kürzer als der
// vorige.
sleep(10-i);
printf ("%d BRAINS! ", i);
exit(0); // Kindprozess erfolgreich beenden
}
}
//
// // hier kommt nur der Vaterprozess vorbei
// for (i = 0; i < 10; ++i){
// // Der Vaterprozess wartet nun, bis der Reihe nach jeder
// // seiner 10 Kindprozesse beendet ist. Leider wird auf das
// // Kind mit der längsten Wartezeit zuerst gewartet. Obwohl
// // die anderen Kinder längst erfolgreich beendet wurden,
// // blockiert das erste Kind eine Bereinigung der Prozesstabelle
// waitpid(pids[i], NULL, 0);
// }
//
// while (1);
return 0; // Vaterprozess erfolgreich beenden
}
#include <stdio.h>
#define VIER 4
int main (void)
{
printf ("Die Antwort lautet: %d\n", VIER);
return 0;
}
#include <stdio.h>
#define hello(x) { printf ("Hello!\n"); printf ("World!\n"); }
#define hallo(x) { printf ("Hallo!\n"); printf ("Welt!\n"); }
#define english 1
int main (void)
{
if (english)
hello ()
else
hallo ()
return 0;
}
#include <stdio.h>
#define hello(x) do { printf ("Hello!\n"); printf ("World!\n"); } while (0)
#define hallo(x) do { printf ("Hallo!\n"); printf ("Welt!\n"); } while (0)
#define english 1
int main (void)
{
if (english)
hello ();
else
hallo ();
return 0;
}
#include <stdio.h>
#define hello(x) \
do \
{ \
printf ("Hello!\n"); \
printf ("World!\n"); \
} \
while (0)
#define hallo(x) \
do \
{ \
printf ("Hallo!\n"); \
printf ("Welt!\n"); \
} \
while (0)
#define english 1
int main (void)
{
if (english)
hello ();
else
hallo ();
return 0;
}
#include <stdio.h>
#define set_answer(a,v) \
do \
a = v; \
while (0)
int main (void)
{
int answer = 0;
set_answer (answer, 42);
printf ("Die Antwort lautet: %d\n", answer);
return 0;
}
.file "preprocessor-13.c"
.text
.section .rodata.str1.1,"aMS",@progbits,1
.LC0:
.string "Die Antwort lautet: %d\n"
.text
.globl main
.type main, @function
main:
.LFB11:
.cfi_startproc
subq $8, %rsp
.cfi_def_cfa_offset 16
movl $42, %esi
leaq .LC0(%rip), %rdi
movl $0, %eax
call printf@PLT
movl $0, %eax
addq $8, %rsp
.cfi_def_cfa_offset 8
ret
.cfi_endproc
.LFE11:
.size main, .-main
.ident "GCC: (Debian 8.3.0-6) 8.3.0"
.section .note.GNU-stack,"",@progbits
#include <stdio.h>
void set_answer (int *a, int v)
{
*a = v;
}
int main (void)
{
int answer = 0;
set_answer (&answer, 42);
printf ("Die Antwort lautet: %d\n", answer);
return 0;
}
.file "preprocessor-14.c"
.text
.globl set_answer
.type set_answer, @function
set_answer:
.LFB11:
.cfi_startproc
movl %esi, (%rdi)
ret
.cfi_endproc
.LFE11:
.size set_answer, .-set_answer
.section .rodata.str1.1,"aMS",@progbits,1
.LC0:
.string "Die Antwort lautet: %d\n"
.text
.globl main
.type main, @function
main:
.LFB12:
.cfi_startproc
subq $8, %rsp
.cfi_def_cfa_offset 16
movl $42, %esi
leaq .LC0(%rip), %rdi
movl $0, %eax
call printf@PLT
movl $0, %eax
addq $8, %rsp
.cfi_def_cfa_offset 8
ret
.cfi_endproc
.LFE12:
.size main, .-main
.ident "GCC: (Debian 8.3.0-6) 8.3.0"
.section .note.GNU-stack,"",@progbits
#include <stdio.h>
#define VIER 4);
int main (void)
{
printf ("Die Antwort lautet: %d\n", VIER
return 0;
}
#include <stdio.h>
#define ZWEIMAL(X) 2 * X
int main (void)
{
printf ("Die Antwort lautet: %d\n", ZWEIMAL (23));
return 0;
}
#include <stdio.h>
#define SECHS 1 + 5
#define NEUN 8 + 1
int main (void)
{
printf ("Die Antwort lautet: %d\n", SECHS * NEUN);
return 0;
}
#include <stdio.h>
#define SECHS (1 + 5)
#define NEUN (8 + 1)
int main (void)
{
printf ("Die Antwort lautet: %d\n", SECHS * NEUN);
return 0;
}
#include <stdio.h>
#define hello printf ("Hello!\n")
#define hallo printf ("Hallo!\n")
#define english 1
int main (void)
{
if (english)
hello;
else
hallo;
return 0;
}
#include <stdio.h>
#define hello(x) printf ("Hello!\n")
#define hallo(x) printf ("Hallo!\n")
#define english 1
int main (void)
{
if (english)
hello ();
else
hallo ();
return 0;
}
#include <stdio.h>
#define hello(x) printf ("Hello!\n"); printf ("World!\n");
#define hallo(x) printf ("Hallo!\n"); printf ("Welt!\n");
#define english 1
int main (void)
{
if (english)
hello ();
else
hallo ();
return 0;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment