Есть ли общий способ для wait
для выполняемого процесса, который фоны в рыбе (например, open "foo"
)? Насколько я могу судить, $!
(PID последнего выполненного дочернего процесса в bash) нет в рыбе, поэтому вы не можете просто wait $!
.Открытие программы, а затем ее ожидание
0
A
ответ
3
1) Идиома рыбы cmd1; and cmd2
или if cmd1; cmd2; end
.
2) Вы должны обнаружить, что bash и zsh также не блокируются, если вы выполните open ARG
. Это потому, что open
, как правило, будет работать в фоновом режиме, а затем выйдет open
. Оболочка не знает, что open
поставил «настоящую» программу в фоновом режиме. Другим примером такого поведения является запуск vim в режиме графического интерфейса пользователя через vim -g
. Добавьте флаг -W
на macOS или -w
на Linux в команду open и -f
в команду vim.
Ключ здесь в том, что open
, даже если он фоны, не вернет сигнал, который рыба будет использовать для оценки оператора and
, пока что-то не произойдет с открытым процессом. Таким образом, вы получаете поведение, которое ищете.
Смежные вопросы
- 1. Ожидание программы для загрузки DLL, а затем ее приостановки
- 2. Ожидание загрузки страницы, а затем ее отображения без iframe?
- 3. Открытие HTML-страницы, а затем сохранение ее в PDF
- 4. Как ждать запуска программы, а затем ее фон?
- 5. Открытие формы, закрытие ее, затем открытие ее снова в том же месте
- 6. async/ожидание и открытие FileStream?
- 7. Создание электронной почты в ASP.NET, а затем открытие ее в почтовой программе по умолчанию для редактирования, а затем отправка из почтовой программы по умолчанию
- 8. Ожидание, пока другой процесс заблокирует, а затем разблокирует мьютекс Win32
- 9. скопируйте всю запись, а затем вставьте ее
- 10. отключить связь, а затем включить ее?
- 11. Строка int, а затем умножьте ее
- 12. Java Объявите переменную, а затем инициализируйте ее.?
- 13. Обнаружение вставленной ячейки, а затем ее получениеFirstResponder
- 14. Клонировать функцию, а затем удалить ее
- 15. Открытие внешней программы
- 16. Потребляйте всю тему Кафки, а затем немедленно отключите ее?
- 17. Ожидание прекращает выполнение программы
- 18. Программы выполняются правильно, а затем segfaults
- 19. Запуск программы, а затем приложение отладчика
- 20. Затем отобразите страницу обработки, а затем перенаправите ее
- 21. Поиск и открытие файловой программы
- 22. Ожидание JFrame, а затем извлечение из него информации
- 23. Ожидание компоновки, которая должна быть обработана, а затем отображать уведомление
- 24. Ожидание изменения в булевом состоянии, а затем запуск активности?
- 25. C# reflection: Ожидание полной загрузки DLL, а затем создание объекта?
- 26. открытие документа и ожидание завершения его редактирования.
- 27. Сохраните результат на карте в C++, а затем повторите ее, а затем распечатайте?
- 28. C# Ожидание запуска программы/процесса
- 29. Java - Как разрешить пользователю устанавливать переменную, а затем сохранять ее как это, через каждое выполнение программы?
- 30. Java: Если у меня есть экземпляр моей программы, как ее обнаружить, а затем закройте старый (ые)
Что вы подразумеваете под «IF_OK_CMD»? Что такое 'open' (т. Е. Какая ОС)? Я смущен, почему вы хотите «fg», когда вы никогда не ставите его в фоновом режиме. По умолчанию процессы выполняются на переднем плане. Возможно ли, что 'open' просто выходит? –
Я отредактирую это, чтобы быть более четким. –
Спасибо за ваши изменения. Я подозреваю, что происходит то, что 'open' просто выходит - он не привязан к фону, он просто заканчивает открытие файла и поэтому выходит. Если это OS X, возможно, вы хотите 'open -W'? –