I's the problem of the fork() pass a wrong program path to CreateProcessW. It shoud pass a GBK code pathname to CreateProcessW but if I set LANG=en_US.UTF-8, the pathname passed to CreateProcessW is UTF-8, so CreateProcessW report file not found.
2010/5/14 Matthias Andree <matthias.and...@gmx.de>: > Am 14.05.2010, 06:29 Uhr, schrieb Huang Bambo: > >> [ba...@bambo-notebook 4.4.4]$ cat tvfork.c >> #include <sys/types.h> >> #include <unistd.h> >> #include <stdio.h> >> >> int main(void) >> { >> pid_t pid = vfork(); >> if ( pid > 0 ) >> { >> printf("I'm chield.\n"); >> _exit(0); >> } >> else if ( pid == 0 ) >> { >> printf("I'm parent"); >> } > > You've got these swapped. pid == 0 means child, > 0 means parent (so that it > directly has the PID of its child and can later call waitpid()). > > You later wrote you've issues with the path; does the same happen if you use > "fork" rather than "vfork"? vfork()ed child processes must not do anything > but modify a variable of type pid_t, call _exit() or exec*(). > > -- > Matthias Andree > > -- > Problem reports: http://cygwin.com/problems.html > FAQ: http://cygwin.com/faq/ > Documentation: http://cygwin.com/docs.html > Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple > > -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple