diff --git a/Readme.md b/Readme.md
index 15cda65320d8a119851c0dc8808c2dd7ae51b335..45e8c211599d3e06b6968bfd0d525cae56c17fce 100644
--- a/Readme.md
+++ b/Readme.md
@@ -196,7 +196,7 @@ int main() {
 # include <unistd.h>
 
 static void sigchldHandler(int sig);
-static int pcount;
+static int pcount = 0;
 
 int main() {
     struct sigaction handleSIGCHLD =
@@ -214,19 +214,19 @@ int main() {
     if (sigprocmask(SIG_BLOCK, &newMask, &oldMask) == -1) die("sigprocmask");
 
     //do critical stuff
-
-    //alte signal mask wiederherstellen
-    if (sigprocmask(SIG_SETMASK, &oldMask, NULL) == -1) die("sigprocmask");
-
     pid_t pid = fork();
     if(pid < 0) die("fork");
     if(pid == 0) {
         sleep(5);
         exit(EXIT_SUCCESS);
     }
+    pcount++;
+
+    //alte signal mask wiederherstellen
+    if (sigprocmask(SIG_SETMASK, &oldMask, NULL) == -1) die("sigprocmask");
+
 
     //passives warten
-    pcount = 1;
     if (sigprocmask(SIG_BLOCK, &newMask, &oldMask) == -1) die("sigprocmask");
     while (pcount > 0) {
         sigsuspend(&oldMask);
diff --git a/Zettel.html b/Zettel.html
index bd9949b871f59212f44373b2abc7bbd90cef0a6c..5388d8a88b55588c6e8e66e2eee44b29161b6f34 100644
--- a/Zettel.html
+++ b/Zettel.html
@@ -184,7 +184,7 @@ accept</p>
 <span class="hljs-meta"># <span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;unistd.h&gt;</span></span>
 
 <span class="hljs-function"><span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">sigchldHandler</span><span class="hljs-params">(<span class="hljs-keyword">int</span> sig)</span></span>;
-<span class="hljs-keyword">static</span> <span class="hljs-keyword">int</span> pcount;
+<span class="hljs-keyword">static</span> <span class="hljs-keyword">int</span> pcount = <span class="hljs-number">0</span>;
 
 <span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
     <span class="hljs-class"><span class="hljs-keyword">struct</span> <span class="hljs-title">sigaction</span> <span class="hljs-title">handleSIGCHLD</span> =
@@ -202,19 +202,19 @@ accept</p>
     <span class="hljs-keyword">if</span> (sigprocmask(SIG_BLOCK, &amp;newMask, &amp;oldMask) == <span class="hljs-number">-1</span>) die(<span class="hljs-string">"sigprocmask"</span>);
 
     <span class="hljs-comment">//do critical stuff</span>
-
-    <span class="hljs-comment">//alte signal mask wiederherstellen</span>
-    <span class="hljs-keyword">if</span> (sigprocmask(SIG_SETMASK, &amp;oldMask, <span class="hljs-literal">NULL</span>) == <span class="hljs-number">-1</span>) die(<span class="hljs-string">"sigprocmask"</span>);
-
     <span class="hljs-keyword">pid_t</span> pid = fork();
     <span class="hljs-keyword">if</span>(pid &lt; <span class="hljs-number">0</span>) die(<span class="hljs-string">"fork"</span>);
     <span class="hljs-keyword">if</span>(pid == <span class="hljs-number">0</span>) {
         sleep(<span class="hljs-number">5</span>);
         <span class="hljs-built_in">exit</span>(EXIT_SUCCESS);
     }
+    pcount++;
+
+    <span class="hljs-comment">//alte signal mask wiederherstellen</span>
+    <span class="hljs-keyword">if</span> (sigprocmask(SIG_SETMASK, &amp;oldMask, <span class="hljs-literal">NULL</span>) == <span class="hljs-number">-1</span>) die(<span class="hljs-string">"sigprocmask"</span>);
+
 
     <span class="hljs-comment">//passives warten</span>
-    pcount = <span class="hljs-number">1</span>;
     <span class="hljs-keyword">if</span> (sigprocmask(SIG_BLOCK, &amp;newMask, &amp;oldMask) == <span class="hljs-number">-1</span>) die(<span class="hljs-string">"sigprocmask"</span>);
     <span class="hljs-keyword">while</span> (pcount &gt; <span class="hljs-number">0</span>) {
         sigsuspend(&amp;oldMask);
diff --git a/signal.c b/signal.c
index 7ef89f92001f9f9a0aede04ea2b5549a7b8f5685..aed66a1e9a83834b6078a96b743b2f7b5f378a2a 100644
--- a/signal.c
+++ b/signal.c
@@ -5,7 +5,7 @@
 #include <unistd.h>
 
 static void sigchldHandler(int sig);
-static int pcount;
+static int pcount = 0;
 
 int main() {
     struct sigaction handleSIGCHLD =
@@ -23,19 +23,19 @@ int main() {
     if (sigprocmask(SIG_BLOCK, &newMask, &oldMask) == -1) die("sigprocmask");
 
     //do critical stuff
-
-    //alte signal mask wiederherstellen
-    if (sigprocmask(SIG_SETMASK, &oldMask, NULL) == -1) die("sigprocmask");
-
     pid_t pid = fork();
     if(pid < 0) die("fork");
     if(pid == 0) {
         sleep(5);
         exit(EXIT_SUCCESS);
     }
+    pcount++;
+
+    //alte signal mask wiederherstellen
+    if (sigprocmask(SIG_SETMASK, &oldMask, NULL) == -1) die("sigprocmask");
+
 
     //passives warten
-    pcount = 1;
     if (sigprocmask(SIG_BLOCK, &newMask, &oldMask) == -1) die("sigprocmask");
     while (pcount > 0) {
         sigsuspend(&oldMask);