This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: vfork always fail problem


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.andree@gmx.de>:
> Am 14.05.2010, 06:29 Uhr, schrieb Huang Bambo:
>
>> [Bambo@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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]