/ / Може ли Unix командата да се намеси в текущата програма? - bash, unix, time, dacapo

Може ли командата за време Unix да пречи на изпълняваната програма? - bash, unix, време, dacapo

от този отговор по командата Time Unix получавам основната идеякак работи времето. Той форсира нов процес и изпълнява командата в този нов процес. Обаче съм срещал поведение, което не мога да разбера.

Опитвам се да направя профил lusearch, показател за Комплексът за бенчмарк DaCapo, Искам да го стартирам с различни конфигурации (брой нишки и брой на повторенията), пренебрегвайки изхода и използването на бенчмарка път да записва реално, потребителско и системно време. С по-голямата част от конфигурациите, моят скрипт работи добре, стартира бенчмарка и записва времето.

С една конкретна конфигурация (голям набор от данни,две нишки и десет повторения) бенчмаркът понякога не достига до прекратяване (80% от случаите, от почти 100 предварителен). Това е командата, която използвам, за да я стартирам:

(time -p java -jar DaCapo.jar lusearch -s large -t 2 -i 10
>/dev/null 2>/dev/null) 2>&1 | awk "{print $2 $4 $6}" > timed &

Обаче, ако не предложа време, бенчмаркът завършва само 100% от времето (също и около 100 пробиви):

(java -jar DaCapo.jar lusearch -s large -t 2 -i 10 >/dev/null 2>/dev/null)

Това поведение се случва само с този бенчмарк -и с тази конфигурация, докато профилът на друг бенчмарк или използва различен брой нишки или различен брой повторения, не виждам същото да се случва. това, което пречи на бенчмарка.

Не виждам как вилицата + exec може да промениреферентно поведение. Има ли нещо специфично, което може да причини това? Например: ли е време да се използва някакъв ресурс, който бенчмаркът иска да използва? Правя нещо нередно при стартирането на бенчмарка?

Отговори:

1 за отговор № 1

"Не достига до прекратяване" е доста неясно. Вие ще пропуснете всички съобщения за грешки, откакто изпращате всичко /dev/null, Невъзможно е да се даде категоричен отговор, без да се знае нищо за това, което тази програма прави, без съобщения за грешки, без обратна връзка.

Единствената реална разлика, за която мога да се сетя, е, че не сте го направили във втория случай. /dev/null на stdin имплицитно при създаването на фон. Възможно е част от програмата да е чувствителна към това testcases за някои примери, където е изрично пренасочванее необходимо. Bash не следва напълно POSIX тук и се различава от всички други черупки с определени комбинации от асинхронни списъци, тръби и пренасочвания.

Сериозно се съмнявам, че има нещо общо с това time, Ако не получите по-добър отговор, може би ще попитате списъка с помощни неща, но няма да могат по-добре без по-добра информация.