Как процесс может прервать stdout и stderr другого процесса на Linux?

Еще один способ отключить данные без использования VBA - это PowerQuery, бесплатная надстройка для Excel 2010 и выше, доступная здесь: http://www.microsoft.com/en-us/download/details. aspx? id = 39379

Установите и активируйте надстройку Power Query. Затем выполните следующие шаги:

Добавьте метку столбца к источнику данных и переведите его в таблицу Excel через Insert> Table или Ctrl-T.

enter image description here [/g1]

Выберите любую ячейку в таблице и на ленте Power Query нажмите «Из таблицы».

enter image description here [/g2]

Это откроет таблицы в окне редактора Power Query Editor.

enter image description here [/g3]

Нажмите на заголовок столбца первого столбца, чтобы выбрать его. Затем на ленте Transform выберите раскрывающийся список Unpivot Columns и выберите Unpivot другие столбцы.

Для версий Power Query, которые не имеют команды других столбцов Unpivot, выберите все столбцы, кроме первого (используя Shift-щелчок на заголовках столбцов) и используйте команду Unpivot.

enter image description here [/g4]

В результате получается плоская таблица. Нажмите «Закрыть» и «Загрузить» на ленте «Главная», и данные будут загружены на новый лист Excel.

enter image description here [/g5]

Теперь к хорошей части. Добавьте некоторые данные в свою исходную таблицу, например

enter image description here [/g6]

Нажмите на лист с помощью таблицы результатов Power Query, а на ленте данных щелкните Refresh all. Вы увидите что-то вроде:

enter image description here [/g7]

Power Query - это не просто одноразовое преобразование. Он повторяется и может быть связан с динамически изменяющимися данными.

40
задан Paweł Hajdan 30 October 2008 в 22:35
поделиться

4 ответа

Я не уверен, будет ли это работать на Вас, но я прочитал страницу некоторое время назад описание метод, который использует gdb

7
ответ дан Jauco 23 September 2019 в 16:31
поделиться

Так как мне не разрешают отредактировать ответ Jauco, я дам полный ответ, который работал на меня (страница Russell полагается на негарантируемое поведение, что при закрытии fd 1 для stdout следующие создают вызов, откроет fd 1.

Так, выполняет простой бесконечный сценарий как это:

import time

while True:
    print 'test'
    time.sleep(1)

Сохраняют его к test.py, работают с

python test.py

, Получают изодромное с предварением:

ps auxw | grep test.py

Теперь, присоедините gdb:

gdb -p (pid)

и делают fd волшебство:

(gdb) call creat("/tmp/stdout", 0600)
$1 = 3
(gdb) call dup2(3, 1)
$2 = 1

Теперь можно выследить/tmp/stdout и видеть вывод, который раньше переходил к stdout.

42
ответ дан Thomas Vander Stichele 23 September 2019 в 16:31
поделиться

Вы не заявляете свою операционную систему, но я собираюсь взять удар и сказать "Linux".

Наблюдение, что пишется в stderr и stdout, вероятно, не собирается помогать. Если это полезно, Вы могли бы использовать мишень (1) перед запуском сценария, чтобы сделать копию stderr и stdout.

можно использовать PS (1) для поиска wchan. Это говорит Вам, чего ожидает процесс. При рассмотрении вывода strace можно проигнорировать объем вывода и определить последний (заблокированный) системный вызов. Если это - операция на дескрипторе файла, можно пойти назад в выводе и определить основной объект (файл, сокет, канал, и т.д.) Оттуда, ответ, вероятно, будет четким.

можно также отправить процессу сигнал, который заставляет его выводить ядро, и затем использовать отладчик и базовый файл для получения отслеживания стека.

1
ответ дан janm 23 September 2019 в 16:31
поделиться

Метод Gdb кажется лучше, но можно сделать это с strace, также:

файл

   -e write=set
               Perform a full hexadecimal and ASCII dump of all the
               data written to file descriptors listed in the spec-
               ified  set.  For example, to see all output activity
               on file descriptors 3 and 5 use -e write=3,5.   Note
               that  this is independent from the normal tracing of
               the write(2) system call which is controlled by  the
               option -e trace=write.

strace-p-e write=1-s 1024-o Это распечатывает несколько больше потребности thanyou (шестнадцатеричная часть), но Вы можете sed это легко.

8
ответ дан Daniel Lopez 23 September 2019 в 16:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: