Merge pchardin@bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/home/cps/mysql/trees/mysql-5.0
This commit is contained in:
commit
885a0c14cd
@ -138,15 +138,25 @@ static int wait_process(My_process_info *pi)
|
|||||||
static int start_process(Instance_options *instance_options,
|
static int start_process(Instance_options *instance_options,
|
||||||
My_process_info *pi)
|
My_process_info *pi)
|
||||||
{
|
{
|
||||||
|
#ifndef __QNX__
|
||||||
*pi= fork();
|
*pi= fork();
|
||||||
|
#else
|
||||||
|
/*
|
||||||
|
On QNX one cannot use fork() in multithreaded environment and we
|
||||||
|
should use spawn() or one of it's siblings instead.
|
||||||
|
Here we use spawnv(), which is a combination of fork() and execv()
|
||||||
|
in one call. It returns the pid of newly created process (>0) or -1
|
||||||
|
*/
|
||||||
|
*pi= spawnv(P_NOWAIT, instance_options->mysqld_path, instance_options->argv);
|
||||||
|
#endif
|
||||||
|
|
||||||
switch (*pi) {
|
switch (*pi) {
|
||||||
case 0:
|
case 0: /* never happens on QNX */
|
||||||
execv(instance_options->mysqld_path, instance_options->argv);
|
execv(instance_options->mysqld_path, instance_options->argv);
|
||||||
/* exec never returns */
|
/* exec never returns */
|
||||||
exit(1);
|
exit(1);
|
||||||
case 1:
|
case -1:
|
||||||
log_info("cannot fork() to start instance %s",
|
log_info("cannot create a new process to start instance %s",
|
||||||
instance_options->instance_name);
|
instance_options->instance_name);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user