странная ошибка для сервера Ubuntu (также Debain Server) - вывод pexpect прерывается - PullRequest
0 голосов
/ 25 сентября 2018

все.Я сталкиваюсь со странной ошибкой.У меня есть программа на С, подобная этой.

#include "stdio.h"
#include "stdlib.h"
int main(int argc, char **argv)
{
    printf("hello\nworld\n!"); 
}

Я скомпилировал программу с помощью gcc, вывод - файл 'a.out'. 'A.out' можно запустить как оболочку bash.

Я использую модуль python pexpect, чтобы получить вывод 'a.out'

#test.py
import pexpect
x = pexpect.spawn("./a.out", echo=False, encoding='utf-8')
x.expect(['.+', pexpect.EOF], timeout=0.1)
print('1. x.after=', x.after, 'x.eof()=', x.eof())
x.expect(['.+', pexpect.EOF], timeout=0.1)
print('2. x.after=', x.after, 'x.eof()=', x.eof())

Я сохранил приведенный выше скрипт как 'test.py'.

Когда я использую 'python3 test.py' для запуска './a.out' в терминале на сервере Ubuntu (16.04, 18.04 и debain), для первого pexpect я получил

  1. x.after = привет x.eof False

и за секунду я получил

x.after = world!x.eof = False

На рабочем столе Ubuntu (16.04, 18.04) я могу получить правильный ответ, для первого взгляда я получил

  1. x.after= Привет, мир!x.eof False

за секунду я получил

x.after = x.eof = True

Обратите внимание, что только первый '\ n' будет прерван.

Я действительно не знаю 'не знаю, что случилось.

...