In reply to Lokesh402:
It might have helped to explain the results you were expecting versus what you actually see.
disable label; kills any process executing under that label name. At the point you execute the first disable fork_1;, there are 3 active processes to be disabled, and the second disable fork_1 executes with nothing to disable.
disable fork; only kills the children of the process executing the disable command. So if you change to adisable fork; only 1 process forked by the c2.fork_join_wait(10) gets killed. The other process forked by the c1.fork_join_wait(30) will get to the #20 $error message.