LINUX.ORG.RU

Убить гуйню command-line.


0

0

Есть скрипт(bash) в нём питоновый фрагмент, который делает информационное окошко.При завершении окошко не умирает, как сделать чтоб оно тоже закрывалось?Или как pid его узнать, или какие признаки по которым его можно убить?

★★

ps x



а можно убить вызвав xkill
и тыкнув в неугодное окно, приложение будет отключено от x-server'a
и должно (должно бы) завершиться


но лучше исправить скрипт

Sylvia ★★★★★
()
Ответ на: комментарий от nitz

$$ — PID bash скрипта
$! — PID питоно-скрипт, если он запускается в фоне

#!/bin/bash

echo "Hello"
/path/to/gui.py &
echo "Python GUI PID=$!"
wait
...
sdio ★★★★★
()
Ответ на: комментарий от sdio

Это не питоноскрипт, это вставка на питоне в баше.

Вот так она деается

#!/bin/bash

function SHOW_COVER() {
/usr/bin/python <<EOF
import gtk

class DeskWin(gtk.Window):

    def __init__(self):
        super(DeskWin, self).__init__()
        
        self.set_decorated(False)
	self.set_resizable(False)
        self.set_skip_pager_hint(True)
        self.set_skip_taskbar_hint(True)
	self.set_title("OLOLO")
        print $!
	
        image = gtk.Image()
        image.set_from_file('$NAME')

        self.connect("destroy", gtk.main_quit)
        self.add(image)
        self.show_all()

DeskWin()
gtk.main()
EOF
}

дальше прочие части, уже лишь баш
наверное надо из неё получать что-то как-то?Что странно по ps aux ничего такого не наблюдаю- только сам скрипт.Разве может гуйня там не отображаться?

***********************************

Почему лоркоде строчки сдвигает?

nitz ★★
() автор топика
Ответ на: комментарий от nitz

А всё, нашёл

import os
os.getpid()

Но как его опять в баш переправить для убийства?

nitz ★★
() автор топика
Ответ на: комментарий от nitz

nitz> Это не питоноскрипт, это вставка на питоне в баше.

Те же яйца, только в профиль.

Рассмотри такой вариант

#!/bin/bash

function SHOW_COVER() {
/usr/bin/python <<EOF >/dev/null 2>&1 &
import gtk

class DeskWin(gtk.Window):

        def __init__(self):
                super(DeskWin, self).__init__()

                self.set_decorated(False)
                self.set_resizable(False)
                self.set_skip_pager_hint(True)
                self.set_skip_taskbar_hint(True)
                self.set_title("OLOLO")

                image = gtk.Image()
                image.set_from_file('$NAME')

                self.connect("destroy", gtk.main_quit)
                self.add(image)
                self.show_all()
 
DeskWin()
gtk.main()

EOF
}

NAME='/path/to/image.png'
SHOW_COVER
pypid="$!"
echo "GUI PID $pypid, will be killed after 10 sec."
sh -c "sleep 10; kill $pypid" &
wait
echo "finish"
sdio ★★★★★
()

try this : xprop | grep _NET_WM_PID and than click on appropriate window

/j262

fuck russian bidlo naciz

anonymous
()
Ответ на: комментарий от sdio

Да, пример рабочий.С >/dev/null 2>&1 и амперсандом $! доступно становится.

(А лоркоде портит, портит!Что он добавяет, какие-то невидимые символы - но ввиде копипасты не работает.)

Но не подходит, скрипт уходит в фон а в нем проверяется количество процессов, вобщем не годится для этого случая.

Сделал всё-таки через os.system.



*************************************************

Про xkill,xprop - мне не нужны _х_, ненужны крестики и тыканье в окошки, с таким же успехом можно было закрывать как обычное окно - они работоспособные оставались.

*************************************************

[ solved & closed ]

nitz ★★
() автор топика
Ответ на: комментарий от nitz

ты не чего не забыл?

 def destroy(self, widget, data=None):
             gtk.main_quit()

enep ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.