--- icewm-1.0.6/src/yapp.cc.fdleak	Sat Jan 13 02:23:18 2001
+++ icewm-1.0.6/src/yapp.cc	Wed Mar 14 18:41:15 2001
@@ -382,6 +382,18 @@
     char *fData;
 };
 
+#if defined(F_GETFD) && defined(FD_CLOEXEC)
+static void
+set_cloexec_flag (int fd)
+{
+    int flags = fcntl (fd, F_GETFD, 0);
+    if (flags < 0)
+	return;
+    flags |= FD_CLOEXEC;
+    fcntl (fd, F_SETFD, flags);
+}
+#endif /* defined(F_GETFD) && defined(FD_CLOEXEC) */
+
 void initSignals() {
     sigemptyset(&signalMask);
     sigaddset(&signalMask, SIGHUP);
@@ -392,6 +404,10 @@
     if (pipe(signalPipe) != 0)
         die(2, _("Pipe creation failed (errno=%d)."), errno);
     fcntl(signalPipe[1], F_SETFL, O_NONBLOCK);
+#if defined(F_GETFD) && defined(FD_CLOEXEC)
+    set_cloexec_flag(signalPipe[0]);
+    set_cloexec_flag(signalPipe[1]);
+#endif /* defined(F_GETFD) && defined(FD_CLOEXEC) */
 }
 
 static void initAtoms() {
