Стартовый экран как команда в Go? - PullRequest
0 голосов
/ 29 мая 2018

Я создаю приложение, которое запускает скрипт в отдельном экране сессии.

Используемый компилятор: go1.10.1 linux / amd64 .

Мой текущий код выглядит следующим образом:

cmd := exec.Command("screen", "-S", "test", "node /home/servers/test/main.js")
cmd.Stdout = os.Stdout
cmd.Start()

Выполнение этого возвращает в выводе следующее:

Must be connected to a terminal.

Также я протестировал запуск его с указанной оболочкой:

cmd := exec.Command("bash", "-c", "screen", "-S", "test", "node /home/servers/test/main.js")

Тот же результат.

Возможно ли выполнить команду, подключенную к текущему терминалу?

1 Ответ

0 голосов
/ 29 мая 2018

Для запуска экрана вы должны эмулировать tty устройство.

Код экрана GNU:

attach_tty = ttyname(0);
    if (!attach_tty) {
        if (errno == ENODEV) {
            // ....
        } else if (fatal) {
            Panic(0, "Must be connected to a terminal.");
        } else {
            // ...
        }
    }

Вы можете взглянуть на https://github.com/mattn/go-tty

...