public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* OT: fork(): parent or child should run first?
@ 2006-01-11 12:37 Gábor Lénárt
  2006-01-11 12:51 ` Arjan van de Ven
                   ` (3 more replies)
  0 siblings, 4 replies; 17+ messages in thread
From: Gábor Lénárt @ 2006-01-11 12:37 UTC (permalink / raw)
  To: linux-kernel

Hello,

The following problem may be simple for you, so I hope someone can answer
here. We've got a complex software using child processes and a table
to keep data of them together, like this:

childs[n].pid=fork();

where "n" is an integer contains a free "slot" in the childs struct array.

I also handle SIGCHLD in the parent and signal handler  searches the childs
array for the pid returned by waitpid(). However here is my problem. The
child process can be fast, ie exits before scheduler of the kernel give
chance the parent process to run, so storing pid into childs[n].pid in the
parent context is not done yet. Child may exit, than scheduler gives control
to the signal handler before doing the store of the pid (if child run for
more time, eg 10 seconds it works of course). So it's impossible to store
child pids and search by that information in eg the signal handler? It's
quite problematic, since the code uses blocking I/O a lot, so other
solutions (like searching in childs[] in the main program and not in signal
handler) would require to recode the whole project. The problem can be
avoided with having a fork() run the PARENT first, but I thing this is done
by the scheduler so it's a kernel issue. Also the problem that source should
be portable between Linux and Solaris ...

Sorry for disturbing the list with this kind of problem but I can't find
any solution elsewhere.

Thanks a lot,

-- 
- Gábor

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2006-01-12 20:19 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-01-11 12:37 OT: fork(): parent or child should run first? Gábor Lénárt
2006-01-11 12:51 ` Arjan van de Ven
2006-01-11 13:02   ` Gábor Lénárt
2006-01-11 13:25     ` Bernd Petrovitsch
2006-01-11 13:49       ` Ian Campbell
2006-01-11 13:55         ` Bernd Petrovitsch
2006-01-11 14:05           ` Ian Campbell
2006-01-11 15:19             ` linux-os (Dick Johnson)
2006-01-12  1:33           ` David Schwartz
2006-01-12  1:38     ` Kurt Wall
2006-01-12 17:23       ` Hugh Dickins
2006-01-12 20:19         ` Gábor Lénárt
2006-01-11 13:34   ` Roland Kuhn
2006-01-11 17:11     ` Lee Revell
2006-01-11 13:03 ` Miquel van Smoorenburg
2006-01-11 13:08 ` Jan-Benedict Glaw
2006-01-12  1:33 ` David Schwartz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox