Существует также версия, использующая pdfjoin/pdfjam (, например здесь ), с перемешиванием последовательности номеров страниц и использованием ее в качестве входных данных для pdfjoin:
# $1: source pdf file
# $2: last page number to consider
# $3: name of output file
for k in $(seq 1 $2 | shuf); do
PAGES+=($1);
PAGES+=($k);
done
pdfjoin ${PAGES[@]} --outfile $3
Если вам нужна медленная утечка процесса, вам может понадобиться что-то вроде этого:
#include <stdio.h>
#include <unistd.h>
int main(void)
{
for (;;) {
pid_t pid = fork(); // (1)
if (pid < 0) {
perror("fork");
return 1;
}
if (pid > 0) { // (2)
for (;;) {
sleep(60 * 60);
}
}
// pid == 0 : child (3) keep looping
usleep(1000000); // 1 second
}
}
Эта программа повторяется:
При этом вы начинаете с процесса A
. A
создает B
, затем A
входит в бесконечный цикл сна. B
продолжает цикл и создает C
, затем B
входит в бесконечный цикл ожидания. C
продолжает цикл и создает D, затем C
входит в бесконечный цикл ожидания,... Вы будете получать один новый процесс в секунду с течением времени. Если программа работает достаточно долго, fork()
в конце концов завершится с ошибкой из-за исчерпания ресурсов, оставив все предшествующие процессы бесконечно бездействующими.
Если вы хотите, чтобы утечка происходила быстрее, вы можете уменьшить значение, передаваемое функции usleep()
.