Version française
Home     About     Download     Resources     Contact us    
Browse thread
[Caml-list] different behaviour of Unix.fork on FreeBSD and Linux
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Beck01, Wolfgang <BeckW@t...>
Subject: [Caml-list] different behaviour of Unix.fork on FreeBSD and Linux
Hello,

while recompiling an OCaml program developed under FrreeBSD
in Linux, I had some problems. 

What is the output of the following OCaml program?

open Printf
open Unix

let ftst() =
    let pid = fork()
    in
    if pid = 0 then
	printf "son\n"
    else begin
	printf "father\n";
	let _= wait()
	in
	()
    end
    
let aa =
    printf "test\n"

let main() =
printf "main\n";
    ftst()
;;

main()

On FreeBSD (OCaml 3.02), it is what I expected
  test
  main
  father
  son

However, on Linux (OCaml 3.06), it is

  test
  main
  son
  test    <-- why?
  main    <-- why?
  father

It looks as if the fork causes a second program initialization.
Strange that this doesn't result in an endless loop.

Any ideas?


--
Wolfgang Beck
T-Systems Nova GmbH 

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners