Вы теряете идентификатор дочернего процесса в родительском элементе, который возвращается родительскому процессу. Я думаю, что вы могли бы восстановить эту информацию, но, возможно, не уникально (то есть я думаю, что вы могли бы получить PID всех своих детей, но не обязательно PID ребенка, которого вы только что разбудили). Если вам не нужно знать PID ребенка, я думаю, что второй способ подойдет.
Кроме того, -1 возвращается в случае ошибки при разветвлении, которую вы не проверяете ни в одном из случаев, что обычно является ошибкой.