Thread overview
[possible bug] cwait undefined?
Jul 17, 2004
Anuj Goyal
Jul 18, 2004
Walter
Jul 18, 2004
Anuj Goyal
Jul 18, 2004
Anuj Goyal
Jul 18, 2004
Anuj Goyal
July 17, 2004
#include <stdio.h>
#include <process.h>

int main()
{
int pid;
int tstat = 0xdeadbeef;

printf("Running ls with spawnlp\n");
pid = _spawnlp( _P_NOWAIT, "ls", "ls", NULL );

// Suspend our execution until the child has terminated.
// obtain termination code upon completion.
cwait(&tstat, pid, WAIT_CHILD);

printf("\nChild process %d terminated with code 0x%x.\n", pid, tstat);
exit(0);
}

this is the error I get:

D:\ccache-2.3>dmc -WA anuj.c
link anuj,,,user32+kernel32/noi;
OPTLINK (R) for Win32  Release 7.50B1
Copyright (C) Digital Mars 1989 - 2001  All Rights Reserved

anuj.obj(anuj)
Error 42: Symbol Undefined _cwait

--- errorlevel 1

However, cwait is defined in c:\dm\include\process.h (line 110)



July 18, 2004
spawnlp returns the exit status directly, not the process id. It doesn't work like unix.

"Anuj Goyal" <Anuj_member@pathlink.com> wrote in message news:cdblcb$1ego$1@digitaldaemon.com...
> #include <stdio.h>
> #include <process.h>
>
> int main()
> {
> int pid;
> int tstat = 0xdeadbeef;
>
> printf("Running ls with spawnlp\n");
> pid = _spawnlp( _P_NOWAIT, "ls", "ls", NULL );
>
> // Suspend our execution until the child has terminated.
> // obtain termination code upon completion.
> cwait(&tstat, pid, WAIT_CHILD);
>
> printf("\nChild process %d terminated with code 0x%x.\n", pid, tstat);
> exit(0);
> }
>
> this is the error I get:
>
> D:\ccache-2.3>dmc -WA anuj.c
> link anuj,,,user32+kernel32/noi;
> OPTLINK (R) for Win32  Release 7.50B1
> Copyright (C) Digital Mars 1989 - 2001  All Rights Reserved
>
> anuj.obj(anuj)
> Error 42: Symbol Undefined _cwait
>
> --- errorlevel 1
>
> However, cwait is defined in c:\dm\include\process.h (line 110)
>
>
>


July 18, 2004
if there is no way to wait, does the parent process block until the spawnlp'd process completes? I can test this but thought I would ask the man himself ;)

I got the code from the M$ site:
Appendix G
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnucmg/html/UCMGch09.asp

In article <cdcgus$1q1s$1@digitaldaemon.com>, Walter says...
>
>spawnlp returns the exit status directly, not the process id. It doesn't work like unix.
>
>"Anuj Goyal" <Anuj_member@pathlink.com> wrote in message news:cdblcb$1ego$1@digitaldaemon.com...
>> #include <stdio.h>
>> #include <process.h>
>>
>> int main()
>> {
>> int pid;
>> int tstat = 0xdeadbeef;
>>
>> printf("Running ls with spawnlp\n");
>> pid = _spawnlp( _P_NOWAIT, "ls", "ls", NULL );
>>
>> // Suspend our execution until the child has terminated.
>> // obtain termination code upon completion.
>> cwait(&tstat, pid, WAIT_CHILD);
>>
>> printf("\nChild process %d terminated with code 0x%x.\n", pid, tstat);
>> exit(0);
>> }
>>
>> this is the error I get:
>>
>> D:\ccache-2.3>dmc -WA anuj.c
>> link anuj,,,user32+kernel32/noi;
>> OPTLINK (R) for Win32  Release 7.50B1
>> Copyright (C) Digital Mars 1989 - 2001  All Rights Reserved
>>
>> anuj.obj(anuj)
>> Error 42: Symbol Undefined _cwait
>>
>> --- errorlevel 1
>>
>> However, cwait is defined in c:\dm\include\process.h (line 110)
>>
>>
>>
>
>


July 18, 2004
nevermind, I guess that can be controlled by these modes:

_P_OVERLAY
Overlays calling process with new process, destroying the calling process (same
effect as _exec calls).
_P_WAIT
Suspends calling thread until execution of new process is complete (synchronous
_spawn).
_P_NOWAIT or _P_NOWAITO
Continues to execute calling process concurrently with new process (asynchronous
_spawn).
_P_DETACH
Continues to execute the calling process; new process is run in the background
with no access to the console or keyboard. Calls to _cwait against the new
process will fail (asynchronous _spawn).


In article <cdcmm9$1s10$1@digitaldaemon.com>, Anuj Goyal says...
>
>if there is no way to wait, does the parent process block until the spawnlp'd process completes? I can test this but thought I would ask the man himself ;)
>
>I got the code from the M$ site:
>Appendix G
>http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnucmg/html/UCMGch09.asp
>
>In article <cdcgus$1q1s$1@digitaldaemon.com>, Walter says...
>>
>>spawnlp returns the exit status directly, not the process id. It doesn't work like unix.
>>
>>"Anuj Goyal" <Anuj_member@pathlink.com> wrote in message news:cdblcb$1ego$1@digitaldaemon.com...
>>> #include <stdio.h>
>>> #include <process.h>
>>>
>>> int main()
>>> {
>>> int pid;
>>> int tstat = 0xdeadbeef;
>>>
>>> printf("Running ls with spawnlp\n");
>>> pid = _spawnlp( _P_NOWAIT, "ls", "ls", NULL );
>>>
>>> // Suspend our execution until the child has terminated.
>>> // obtain termination code upon completion.
>>> cwait(&tstat, pid, WAIT_CHILD);
>>>
>>> printf("\nChild process %d terminated with code 0x%x.\n", pid, tstat);
>>> exit(0);
>>> }
>>>
>>> this is the error I get:
>>>
>>> D:\ccache-2.3>dmc -WA anuj.c
>>> link anuj,,,user32+kernel32/noi;
>>> OPTLINK (R) for Win32  Release 7.50B1
>>> Copyright (C) Digital Mars 1989 - 2001  All Rights Reserved
>>>
>>> anuj.obj(anuj)
>>> Error 42: Symbol Undefined _cwait
>>>
>>> --- errorlevel 1
>>>
>>> However, cwait is defined in c:\dm\include\process.h (line 110)
>>>
>>>
>>>
>>
>>
>
>


July 18, 2004
sorry again, I should have looked here in the frist place:
http://www.digitalmars.com/rtl/process.html
In article <cdcmm9$1s10$1@digitaldaemon.com>, Anuj Goyal says...
>
>if there is no way to wait, does the parent process block until the spawnlp'd process completes? I can test this but thought I would ask the man himself ;)
>
>I got the code from the M$ site:
>Appendix G
>http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnucmg/html/UCMGch09.asp
>
>In article <cdcgus$1q1s$1@digitaldaemon.com>, Walter says...
>>
>>spawnlp returns the exit status directly, not the process id. It doesn't work like unix.
>>
>>"Anuj Goyal" <Anuj_member@pathlink.com> wrote in message news:cdblcb$1ego$1@digitaldaemon.com...
>>> #include <stdio.h>
>>> #include <process.h>
>>>
>>> int main()
>>> {
>>> int pid;
>>> int tstat = 0xdeadbeef;
>>>
>>> printf("Running ls with spawnlp\n");
>>> pid = _spawnlp( _P_NOWAIT, "ls", "ls", NULL );
>>>
>>> // Suspend our execution until the child has terminated.
>>> // obtain termination code upon completion.
>>> cwait(&tstat, pid, WAIT_CHILD);
>>>
>>> printf("\nChild process %d terminated with code 0x%x.\n", pid, tstat);
>>> exit(0);
>>> }
>>>
>>> this is the error I get:
>>>
>>> D:\ccache-2.3>dmc -WA anuj.c
>>> link anuj,,,user32+kernel32/noi;
>>> OPTLINK (R) for Win32  Release 7.50B1
>>> Copyright (C) Digital Mars 1989 - 2001  All Rights Reserved
>>>
>>> anuj.obj(anuj)
>>> Error 42: Symbol Undefined _cwait
>>>
>>> --- errorlevel 1
>>>
>>> However, cwait is defined in c:\dm\include\process.h (line 110)
>>>
>>>
>>>
>>
>>
>
>