Существует путь к Vim, чтобы знать, что терминал был закрыт: SIGHUP
сигнал.
Когда Вы закрываете терминал, SIGHUP
сигнал отправляется в процесс управления, который обычно является Вашей оболочкой. Ваша оболочка должна затем выйти, заставив Vim быть отправленной SIGHUP
сигнал. По умолчанию процессы просто завершаются, когда они получают SIGHUP
сигнал.
Я не знаком с Vim, но возможно он может быть настроен для сохранения всей работы прежде, чем выйти когда a SIGHUP
сигнал получен. В противном случае, возможно, можно установить оболочку trap
на SIGHUP
, возможно, в сочетании с рабочим Vim с nohup
, выполнить специальную команду, которая так или иначе заставляет Vim выходить более корректно, когда терминал закрывается.
После отправки документа проверьте cupsLastErrorString
. Если это является пустым, необходимо быть хорошими. Кроме того, большинство функций должно сказать Вам, если бы это перестало работать, поскольку они возвращают целое число.
Это - то, что я наконец закончил тем, что делал. printFile () функция возвращает идентификатор печати, какое использование чашек, в то время как текущая очередь печати через командную строку доступна через lpstat. Я думаю, что это немного грязно, но это достаточно хорошо для моих потребностей прямо сейчас. Спасибо за справку все Вы все пошагово переместили меня в соответствующем направлении.
20 printid = conn.printFile('EPSON_TM-P2.01', 'testreceipt.txt', 'test', {})
21
22 stop = 0
23 TIMEOUT = 60
24
25 while str(subprocess.check_output(["lpstat"])).find(str(printid)) > 0 and stop < TIMEOUT:
26 stop+= 1
27 time.sleep(1)
28 if stop < TIMEOUT:
29 print "PRINT SUCCESS"
30 else:
31 print "PRINT FAILURE"
Я полагаю, что эквивалент в pycups является классом IPPError (отметьте try / except
пример кода), начиная с cupsLastError*
функции в cups
возвращает коды ошибок IPP.
Проверка кода состояния подпроцесса должна также работать, но походит на ненужные издержки если pycups
даст Вам код непосредственно.
Я использую getJobs, чтобы проверить, были ли задания отправлены на принтер.
printid = conn.printFile('EPSON_TM-P2.01', 'testreceipt.txt', 'test', {})
while conn.getJobs().get(printid, None) is not None:
time.sleep(1)
Если установлен mc
, используйте его
Я использовал ls
и ls -a
, но действительно должен был использовать ls -al
, прежде чем задавать вопрос.
ls -al
показывает
-rw-r--r-- 1 Jing staff 49630 27 Nov 11:02
drwxr-xr-x 9 Jing staff 306 19 Feb 09:32 ..
drwxr-xr-x 3 Jing staff 102 19 Feb 09:46 ~
drwxr-xr-x 8 Jing staff 272 19 Feb 10:09 .
drwxr-xr-x 15 Jing staff 510 19 Feb 00:49 ..
drwxr-xr-x 10 Jing staff 340 19 Feb 01:04 foo
-rw-r--r-- 1 Jing staff 2370 19 Feb 01:27 log
-rw-r--r-- 1 Jing staff 268 19 Feb 00:48 bar
Как вы можете видеть ..
и ~
Я беспокоился о том, чтобы иметь пространство перед ними. Дело не в том, что wget не работал на ..
и ~
, просто я как-то добавил дополнительное пространство. Работали команды rm -r '~'
и rm -r '..'
.
Можно подождать, пока
conn.getJobAttributes(printer_returns)["job-state"]
не станет равным 9 (IPP_JOB_COMPLETED)