叉在铁轨上的红宝石

时间:2012-07-30 21:01:37

标签: ruby fork

似乎是一个简单的问题,但我无法弄清楚。我是铁杆上的新手。

1    pid = Process.fork
2    
3      if pid.nil? then   
4        puts "Child process"
5      else
6        puts " Continuing parent proceesss"
7      end  
8       
9      puts "This line should be printed only once, by parent"

我的理解是第9行应该只由父母打印一次。但是,它被打印两次。由父母和孩子组成!!

如何在父级中执行第9行 ONLY ?即我希望孩子在第4行之后退出

感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

哈,你差不多了。您需要在第4行之后放置exit

if pid.nil? then
    puts "Child process"
    exit
else
    ...

分叉流程设计以允许两个流程继续,对吧?你将你的过程分成两份,然后他们都从他们分叉的地方继续。如果您希望孩子退出,您应该告诉它退出。