Не видя кода, это предположение, но...
Программа, выполняющая чтение, вероятно, имеет код, который пытается читать из стандартного ввода с большим количеством эквивалентов блоков try/catch (C #-на основе псевдо-кода -):
string memoryLocationToDisplay;
while(true) {
try {
Console.Write("Give me data to dump: ")
string input = Console.ReadLine();
if (IsValidMemoryLocation(input)) {
memoryLocationToDisplay = input;
}
catch {}
PrintMemoryLocation(memoryLocationToDisplay)
try {
Console.Write("Dump again (y/n): ")
if Console.ReadLine().ToLower() == "n" {
exit;
}
} catch {}
}
Однако единственным символом, который программа считывает, является ^d (Конец файла ), что функционально приводит к бесконечному циклу с вечной печатью одной и той же ячейки памяти.
Это ошибка в программе, выполняющей чтение.но это, вероятно, достаточно легко обойти:
printf "A\nn\n" |./program
будет напечатан бит printf
A<newline>
n<newline>
который затем проходит через программу, так что теперь она видит 'n' и новую строку, так что она должна завершиться.
tmux
— это просто программа, которая запускает другие программы, поэтому tmux
на самом деле не имеет к этому никакого отношения, кроме того, что она запускает для вас новую bash
сессию. Проверьте это :Выполните alias t='echo hi'
в терминале, затем запустите команду bash
, чтобы запустить новую оболочку (в том же терминале ). Новый псевдоним t
недоступен в новой оболочке. Псевдонимы не наследуются. Наследуются только переменные среды (и некоторые другие вещи, например текущий каталог ).
Короче говоря,псевдонимы не наследуются оболочками, запущенными с помощью tmux
. Вам нужно будет создавать экземпляры псевдонимов в каждой tmux
панели (, возможно, путем добавления определений псевдонимов в ваш ~/.bashrc
файл ).