Ruby backtick'd код выходит с 136? - PullRequest
0 голосов
/ 07 января 2011

У меня есть скрипт ruby, который выполняет другой скрипт ruby ​​с помощью обратных кавычек. Как это:

output = `#{name}/#{sccript} --list`

В некоторых сценариях (я запускаю это во время сборки бинарного пакета и выполняются несколько экземпляров одного и того же скрипта).

вывод равен 0 длины, а $? установлен на 136.

Есть идеи, что может быть причиной этого?

Ответы [ 2 ]

8 голосов
/ 07 января 2011

Код выхода 136 находится в диапазоне 129-255, который представляет задания, завершенные сигналами Unix.

Чтобы узнать, какой сигнал вычтите 128, вы найдете его сигнал 8:SIGFPE.Одной из возможных причин может быть целочисленное деление на ноль в программе на Си.

0 голосов
/ 07 января 2011

обратные пометки всегда будут возвращаться независимо от того, каким будет стандартный вывод вызова, если вы просто хотите получить значение true или false, используйте system:

ruby-1.9.2-p0 :009 > \`echo "hello"\`
=> "hello\n"   
ruby-1.9.2-p0 :010 > system("echo 'hello'")   
hello 
=> true

, поэтому, чтобы ответить на ваш вопрос, «136» - это любой сценарийвозвращение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...