Hi all, I'm attempting to write a simple daemon in mono that should background itself after starting correctly. Essentially, it should fork() and then the parent should exit(0) while the child process continues.
I've gotten this working with the (apparently now obsolete) Mono.Posix.Syscall class. However, in the newer Mono.Unix.Native.Syscall, we find this: #if false // fork(2) // pid_t fork(void); [DllImport (LIBC, SetLastError=true)] [Obsolete ("DO NOT directly call fork(2); it bypasses essential "shutdown code.\nUse System.Diagnostics.Process private static extern int fork (); // vfork(2) // pid_t vfork(void); [DllImport (LIBC, SetLastError=true)] [Obsolete ("DO NOT directly call vfork(2); it bypasses essential "shutdown code.\nUse System.Diagnostics.Process private static extern int vfork (); #endif Apparently, fork() was originally marked obsolete, then commented out completely. However, I don't understand the rationale here. It seems to me that fork() has nothing to do with shutdown, and thus cannot possibly bypass "essential shutdown code." On the other hand, Syscall.execve is *not* obsolete and *does* bypass shutdown code. Furthermore, the recommended System.Diagnostics.Process class provides no equivalent to fork(), so I'm not sure why it's being recommended. What's the rationale here? Thanks, Avery _______________________________________________ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list