Having multiple instances of a single application start a single instance of another one

2007-02-23 Thread buffinator
I have two applications that should work together, let's call them A and B.

The first time A starts, it should open a B process and start 
communicating with it. All other times an A instance starts it should 
simply talk with the B that already is open.

The problem here is, if I start say 40 A applications at once... how do 
I check if a B is open "fast enough" so that the other A's (not the 
first one) won't spawn new B's?

Im programming this in windows and am currently using the horrible 
solution in A

if not win32gui.FindWindow(None, "Name of B"):
spawn_B_here()

This only works well if there is a small time between the A's started 
first...

What would the best solution for my problem be?

/buffis
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Having multiple instances of a single application start a single instance of another one

2007-02-23 Thread buffinator
Troy Melhase wrote:
>> The first time A starts, it should open a B process and start
>> communicating with it. All other times an A instance starts it should
>> simply talk with the B that already is open.
> 
> B should write its process id to a location known by both
> applications.  When A starts, it should read that PID from the file
> and attempt to communicate with the process having that PID.
> 
> When B starts, it should also check for the file.  If it's found and
> if the PID in it is present in the process table, then B should exit.
> Otherwise, it should start normally and write its own PID to the file.

Three very simple questions then.

1. How do I find out a running applications process ID

2. How do I check if a process ID is bound to a running application.

3. There won't be any issues with different applications trying to read 
and write the same file doing this?

/buffis
-- 
http://mail.python.org/mailman/listinfo/python-list


Recreating a char array from a pointer

2007-02-24 Thread buffinator
I have an application that has to send a string as a pointer to memory, 
and then another one that has to retriece it and fetch the string. 
Converting the string to an array and sending the pointer was easy

import array
a=array.array("c","mytextgoeshere")
my_pointer = a.buffer_info()[0]


But then I tried to get the data back... and I just can't find out how. 
I ended up writing a C module for this that works fine in linux, but 
this application is meant for windows and I just can't get C-modules to 
compiler there correctly since I suck at windows.

The relevant code from the module is

static PyObject *
pointrtostr_casttostr(PyObject *self, PyObject *args)
{
 char *mystr;
 long int p;

 if (!PyArg_ParseTuple(args, "l", &p))
   return NULL;

 mystr = (char*)p;
 return Py_BuildValue("s", mystr);
}

My question is... can I do the above code in python without involving C 
since it is quite a big hassle to have to go through the module building 
in windows? :/

/buffis
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Recreating a char array from a pointer

2007-02-24 Thread buffinator
Oh, nice
Im running 2.4 but im gonna download it and give it a try then

Thanks!

Thomas Heller wrote:
> buffinator schrieb:
>> I have an application that has to send a string as a pointer to memory, 
>> and then another one that has to retriece it and fetch the string. 
>> Converting the string to an array and sending the pointer was easy
>>
>> import array
>> a=array.array("c","mytextgoeshere")
>> my_pointer = a.buffer_info()[0]
>>
>>
>> But then I tried to get the data back... and I just can't find out how. 
>> I ended up writing a C module for this that works fine in linux, but 
>> this application is meant for windows and I just can't get C-modules to 
>> compiler there correctly since I suck at windows.
>>
>> The relevant code from the module is
>>
>> static PyObject *
>> pointrtostr_casttostr(PyObject *self, PyObject *args)
>> {
>>  char *mystr;
>>  long int p;
>>
>>  if (!PyArg_ParseTuple(args, "l", &p))
>>return NULL;
>>
>>  mystr = (char*)p;
>>  return Py_BuildValue("s", mystr);
>> }
>>
>> My question is... can I do the above code in python without involving C 
>> since it is quite a big hassle to have to go through the module building 
>> in windows? :/
> 
> You can use the ctypes package for this.  It is in the standard library in 
> Python 2.5,
> for older versions it is a separate download.
> 
> Thomas
> 
-- 
http://mail.python.org/mailman/listinfo/python-list