При повторном запуске в 2025 году она частично сломалась.
Вот небольшой пример, который изолирует проблему. :
Код: Выделить всё
TerminalCols.javaКод: Выделить всё
package p5_terminal_graphics_examples;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
public class TerminalCols {
public static void main(String[] args) {
while (true) {
int cols = cols();
System.out.println("Terminal columns: " + cols);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
static public int cols() {
return Integer.parseInt(cmd("tput cols"));
}
static public String cmd(String args) {
return exec("sh", "-c", args);
}
static public String exec(String... cmd) {
try {
ByteArrayOutputStream bout = new ByteArrayOutputStream();
Process p;
p = Runtime.getRuntime().exec(cmd);
int c;
InputStream in = p.getInputStream();
while ((c = in.read()) != -1) {
bout.write(c);
}
in = p.getErrorStream();
while ((c = in.read()) != -1) {
bout.write(c);
}
p.waitFor();
String result = new String(bout.toByteArray());
return result.trim();
}
catch (IOException | InterruptedException e) {
return null;
}
}
}
Однако он всегда печатает значение по умолчанию — 80.
Если я напрямую набираю tput cols в терминале, то он всегда возвращает правильный ответ.
Поэтому со временем что-то сломалось, и я не знаю, как дальше выяснять, как чтобы это исправить. Любая помощь будет приветствоваться.
Подробнее здесь: https://stackoverflow.com/questions/793 ... default-80
Мобильная версия