Hello, uv322!

> Но после выполнения первой команды скрипт дальше не работает, будто

Вы, вероятно, хотите запустить такой скрипт из emacs? Сейчас запустил
strace на скрипт, который убивает emacs, а потом запускает его
снова. После убиения emacs bash нормально предпринял попытку запустить
emacs, но дочерний процесс сразу же поймал SIGHUP. Ниже привожу кусок
лога для информации. Возможно, это вызвано тем, что при запуске второго
emacs поток стандартного ввода не имеет посылающей стороны, которая была
в убитом emacs'е и убилась вместе с ним. В общем, так делать как-то
неправильно...

--- SIGCHLD (Child exited) @ 0 (0) ---
wait4(-1, 0x7fffb6077c1c, WNOHANG, NULL) = -1 ECHILD (No child
processes)

Это отработал killall

rt_sigreturn(0xffffffffffffffff)        = 0
rt_sigaction(SIGINT, {SIG_DFL, [], SA_RESTORER, 0x7f62ad942070}, {0x42bc10, [], 
SA_RESTORER, 0x7f62ad942070}, 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8)  = 0
read(255, "emacs\n", 31)                = 6

Прочитали строку с вызовом emacs 

stat(".", {st_mode=S_IFDIR|0700, st_size=4096, ...}) = 0
stat("/home/msp/bin/emacs", {st_mode=S_IFREG|0755, st_size=262, ...}) = 0
stat("/home/msp/bin/emacs", {st_mode=S_IFREG|0755, st_size=262, ...}) = 0
geteuid()                               = 500
getegid()                               = 500
getuid()                                = 500
getgid()                                = 500
access("/home/msp/bin/emacs", X_OK)     = 0
stat("/home/msp/bin/emacs", {st_mode=S_IFREG|0755, st_size=262, ...}) = 0
geteuid()                               = 500
getegid()                               = 500
getuid()                                = 500
getgid()                                = 500
access("/home/msp/bin/emacs", R_OK)     = 0
stat("/home/msp/bin/emacs", {st_mode=S_IFREG|0755, st_size=262, ...}) = 0
stat("/home/msp/bin/emacs", {st_mode=S_IFREG|0755, st_size=262, ...}) = 0
geteuid()                               = 500
getegid()                               = 500
getuid()                                = 500
getgid()                                = 500
access("/home/msp/bin/emacs", X_OK)     = 0
stat("/home/msp/bin/emacs", {st_mode=S_IFREG|0755, st_size=262, ...}) = 0
geteuid()                               = 500
getegid()                               = 500
getuid()                                = 500
getgid()                                = 500
access("/home/msp/bin/emacs", R_OK)     = 0
rt_sigprocmask(SIG_BLOCK, [INT CHLD], [], 8) = 0
clone(child_stack=0,
flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD,
child_tidptr=0x7f62ae05b7c0) = 20988

Породили новый процесс

--- SIGHUP (Hangup) @ 0 (0) ---
+++ killed by SIGHUP +++

На этом лог и кончился. Подозреваю, что дело именно в трубах.

-- 
Michael Pozhidaev. Tomsk, Russia. E-mail: [email protected]
Russian info page: http://www.marigostra.ru/

-- 
Blinux-rus mailing list
[email protected]
http://www.a11ywiki.org/cgi-bin/mailman/listinfo/blinux-rus

Ответить