Это похоже на проблему в " Почему программа с fork ()иногда выводит свой вывод несколько раз? ".
Выходной буфер не очищается немедленно, когда вы выполняете printf("%d ", pid)
, так как строка не завершается символом новой строки, и поскольку вы не вызываете fflush(stdout)
. Это означает, что неочищенный буфер наследуется дочерними процессами, и вы получаете PID исходного родителя, выводимого слишком много раз, когда буфер, наконец, очищается последним printf()
вызовом (, который выводит новую строку )или в конце выполнение программы.
Вставка fflush(stdout)
непосредственно после этого printf()
вызова (вместе с включением соответствующих заголовков и правильным вызовом wait()
)приведет к чему-то вроде
Αρχική τιμή δευτερολέπτων 1547400480
79301 0 check 793010
check 793010
check 793010
check 793010
Также обратите внимание, что вы получите процесс, бесконечно зацикленный в while
цикле (первого дочернего процесса, значение которого pid
равно нулю ).
Вам нужно только rpm
; вы можете перечислить файлы, отправленные в RPM с помощью:
rpm -qlp /path/to/your.rpm
Дополнительный -v
добавит сведения о файле:
rpm -qvlp /path/to/your.rpm
Для просмотра включенных скриптов, которые также могут создавать файлы:
rpm -qp --scripts /path/to/your.rpm