diff --git a/include/my_global.h b/include/my_global.h
index e026f8a..c393b87 100644
--- a/include/my_global.h
+++ b/include/my_global.h
@@ -594,6 +594,9 @@ typedef SOCKET_SIZE_TYPE size_socket;
 #ifndef O_NOFOLLOW
 #define O_NOFOLLOW      0
 #endif
+#ifndef O_CLOEXEC
+#define O_CLOEXEC       0
+#endif
 
 /* additional file share flags for win32 */
 #ifdef __WIN__
diff --git a/mysys/my_create.c b/mysys/my_create.c
index 51de343..6a3bcd6 100644
--- a/mysys/my_create.c
+++ b/mysys/my_create.c
@@ -43,7 +43,7 @@ File my_create(const char *FileName, int CreateFlags, int access_flags,
 #if defined(_WIN32)
   fd= my_win_open(FileName, access_flags | O_CREAT);
 #else
-  fd= open((char *) FileName, access_flags | O_CREAT,
+  fd= open((char *) FileName, access_flags | O_CREAT | O_CLOEXEC,
 	    CreateFlags ? CreateFlags : my_umask);
 #endif
 
diff --git a/mysys/my_fopen.c b/mysys/my_fopen.c
index 3ec5e0b..1fa3f9b 100644
--- a/mysys/my_fopen.c
+++ b/mysys/my_fopen.c
@@ -42,7 +42,7 @@ static void make_ftype(char * to,int flag);
 FILE *my_fopen(const char *filename, int flags, myf MyFlags)
 {
   FILE *fd;
-  char type[5];
+  char type[10];
   DBUG_ENTER("my_fopen");
   DBUG_PRINT("my",("Name: '%s'  flags: %d  MyFlags: %lu",
 		   filename, flags, MyFlags));
@@ -350,9 +350,11 @@ static void make_ftype(register char * to, register int flag)
   else    
     *to++= 'r';
 
-#if FILE_BINARY            /* If we have binary-files */  
   if (flag & FILE_BINARY)    
     *to++='b';
-#endif  
+
+  if (O_CLOEXEC)
+    *to++= 'e';
+
   *to='\0';
 } /* make_ftype */
diff --git a/mysys/my_open.c b/mysys/my_open.c
index 5263ba4..b6d8f08 100644
--- a/mysys/my_open.c
+++ b/mysys/my_open.c
@@ -46,9 +46,9 @@ File my_open(const char *FileName, int Flags, myf MyFlags)
 #if defined(_WIN32)
   fd= my_win_open(FileName, Flags);
 #elif !defined(NO_OPEN_3)
-  fd = open(FileName, Flags, my_umask);	/* Normal unix */
+  fd = open(FileName, Flags | O_CLOEXEC, my_umask);     /* Normal unix */
 #else
-  fd = open((char *) FileName, Flags);
+  fd = open((char *) FileName, Flags | O_CLOEXEC);
 #endif
 
   fd= my_register_filename(fd, FileName, FILE_BY_OPEN,
