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: howto register process


On Fri, Nov 12, 2004 at 07:32:40PM +0200, Kamen TOMOV wrote:
>On Fri, Nov 12 2004, Christopher Faylor wrote:
>
>> On Fri, Nov 12, 2004 at 05:29:45PM +0200, Kamen TOMOV wrote:
>>
>> >That's a great idea. I'll stick with it and will rewrite the
>> >application to start the daemons from the cygwin's shell. That
>> >would make my life much easier because instead of rewriting the
>> >cygwin's fork function to register processes in its own virtual
>> >table (although I do not know if that is possible) they would be
>> >instantly available. It was strange to me that fork do not make
>> >them appear there but anyway... thank you very much!
>> 
>> I can't shake the feeling that we are dancing around a misconception
>> here somewhere.
>> 
>> The bash shell doesn't do anything magical when it starts processes.
>> If you are using cygwin's fork then you shouldn't be worrying about
>> "windows pids".  If you are running a cygwin program which uses fork
>> and exec then the processes that it creates are cygwin processes and
>> you will be able to manipulate them using normal UNIX functions.
>> 
>> If you are calling cygwin_winpid_to_pid on a pid that you got from a
>> fork(), or spawn*() call then that is not right.
>> 
>> cgf
>
>It's for sure that there are some things that are not quite clear, but
>in a nutshell:
>
>We have a daemon compiled with cygwin's fork, kill, etc.
>
>1st scenario: 
>
>- the daemon gets started as a Windows service
>- the daemon forks (calling the cygwin's version of fork()) and as a
>result we have a few children.
>
>The facts:
>
>- neither the daemon, nor its children are seen by cygwins's ps.exe or
>  could be killed with kill.exe, or kill().
>
>- calling cygwin_winpid_to_pid on the parent's pid or any of its
>  children's pid returns the error result: -1.

*Why* are you calling cygwin_winpid_to_pid on the pids?  If you are
getting the pid from the return value of fork they are cygwin pids.
You don't call cygwin_winpid_to_pid on them.  A normal cygwin program
should not be using cygwin_winpid_to_pid.

As Pierre points out in the next message, what you are describing seems
normal for starting a service in certain scenarios but you still haven't
explained why you think you need cygwin_winpid_to_pid.

cgf

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


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