Это можно сделать тремя способами.
Вместо использования оболочки, встроенной -в команду ulimit
, используйте команды, разработанные для этой цели, из различных наборов инструментов семейства daemontools -:
softlimit
из daemontools softlimit
из фридта softlimit
из daemontools -бис softlimit
из ноша s6-softlimit
из с6 chpst
от рунит runlimit
от преступника Таким образом, можно запустить, используя softlimit
из набора инструментов nosh в качестве примера:
gnome-terminal -t A --tab -e "softlimit --coresize unlimited./app1"
Это ограничение также применяется к процессу эмулятора терминала. В этом случае это будет довольно доброкачественно. Но если кто-то применяет другие ограничения, такие как ограничения дескрипторов открытых файлов или ограничения разветвления процессов, это может быть проблематично.
(ulimit -c unlimited ; urxvt -e "./app1")
Обратите внимание, что это не будет работать с терминалом GNOME или клиентским -серверным вариантом Unicode RXVT . Оба они не вызывают напрямую эмулятор терминала как дочерний элемент вашего скрипта. Они выполняют удаленный вызов через серверный процесс, который не будет иметь ограничений ресурсов, установленных в вашем сценарии, и не получит их.
ulimit
. Помните, что вы должны строить это снизу вверх.
ulimit -c unlimited ; exec "./app1"
sh
, он должен быть одним аргументом после -c
, поэтому его необходимо заключить в кавычки:sh -c "ulimit -c unlimited ; exec \"./app1\""
sh
терминалу GNOME, он также должен быть одним аргументом после -e
,поэтому необходимо применить второй уровень цитирования:gnome-terminal -e 'sh -c "ulimit -c unlimited ; exec \"./app1\""'
Учитывая, что
$ g++ file.C -o file
создаст исполняемый файл с именем file
, можно было бы надеяться экстраполировать это
$ g++ file.C -o helloworld.out
создаст упавший исполняемый файл helloworld.out
.