Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Linux и FreeBSD » Программное обеспечение Linux и FreeBSD » Программа spawn

Ответить
Настройки темы
Программа spawn

редкий гость


Сообщения: 1696
Благодарности: 44

Профиль | Сайт | Отправить PM | Цитировать


В общем я не нашёл способа заставаить bash запустить программу так, что бы она продолжила работать после того как непосредственно bash умрёт. Т.е. после запуска "xemacs some_file &" в xterm и закрытия этого самого xterm'а, окно xemacs'а умирало Короче, я написал программу spawn - после запуска "spawn xemacs some_file" в xterm'е и закрытия xterm'а xemacs продолжает прекрасно работать.

Вот код программы:
Код: Выделить весь код
/*
 * Small "spawning" utility - processes run with spawn live after shell
 * from wich spawn utility was run dies. Just enter "spawn xclock" in xterm
 * and close xterm window - xclock will be still runing.
 * 
 * (c)2003 Ivan 'ivank' Korostelev
 * mailto: ivank@ivank.ru
 */
#include <unistd.h>
#include <stdio.h>
#include <errno.h>

int main(int argc, char **argv)
{
  if (argc < 2)
    {
      fprintf(stderr, "Usage: spawn <prog> <args>\n");
    }
  if (!fork())
    {
      execvp(argv[1], &argv[1]);
      printf("spawn error: %s\n", strerror(errno));
    }
  return 0;
}
Записать это всё в spawn.c, откопилировать[pre]gcc spawn.c -o spawn
strip spawn[/code]
Стать рутом и скопировать spawn в /usr/local/bin.

Затем, пользователи bash открывают ~/.bashrc и дописывают в него:[pre]alias xemacs="spawn xemacs"
# так же для остальных програм:
# alias <имя програмы> = "spawn <имя програмы>"
shopt -s expand_aliases[/pre]
Пользователи других шеллов, должны знать как  это сделать в их любимой оболочке - не за красвые же глазки они сменили (стандартный) баш, на нечто отнюдь не столь расппространённое.

Всё "xemacs smt" делает то что ожидалось - отткрывает окошко xemacs'а, котороее не зависит от попродившего его шелла (но только в иксах, в консоли работать не будет. Но для консоли есть vim )

Может кому будет интересно. Кстати, если подобного эффекта можно добиться более простым способом - готов выслушать.

P.S. Для XEmacs более прямым способом открытия файла будет использование gnuclient, но это ртогонально предлагаемоому решению.

-------
http://ivank.ru


Отправлено: 21:06, 09-08-2003

 

Пользователь


Сообщения: 70
Благодарности: 0

Профиль | Отправить PM | Цитировать


а не проще ли:
$nohup <progname> &
???

-------
nix rlz 4eva
m$ sux
I want GNU!


Отправлено: 18:45, 05-09-2003 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Пингвин по Киевски


Сообщения: 238
Благодарности: 0

Профиль | Отправить PM | Цитировать


ivank
Хехе... наверное я не уловил какойто прикол твоей проги...
Я согласин с Serpenter, какая разница между nohup blabla& и твоей прогой ???

[s]Исправлено: Nigon, 15:52 6-09-2003[/s]

Отправлено: 15:50, 06-09-2003 | #3


Аватара для makaveli lcf

Старожил


Сообщения: 270
Благодарности: 1

Профиль | Отправить PM | Цитировать


то Nigon
нет брат =  ти ниправ
nohup в иксах несрабатывает
закрываешь х-терм = и все! пропало
(по крайней мере в РХ9ю0)

такшта парень прав)

-------
Now I know that the LORD [is] greater than all gods: for in the thing wherein they dealt proudly [he was] above them. (Exodus 18:11)


Отправлено: 20:40, 08-09-2003 | #4


Старожил


Сообщения: 345
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вообще нахрена все это? nohup есть и его юзать надо. А так вы сейчас и cp,ls,rm.mv писать начнете??? Есть баш, настройте его и будет счастье. У меня slackware 9.0, про проблему в Х вообще не слышал. У меня даже когда в консоли процесс в bg отправляеш, можно выйти, а он себе крутится...

-------
Лучше молчать и казаться идиотом, чем заговорить и развеять сомнения...


Отправлено: 05:30, 09-09-2003 | #5


Аватара для Guest

Guest


Профиль | Цитировать


ivank
А если вместо execvp попробовать fork() ?

Отправлено: 09:10, 09-09-2003 | #6


Аватара для Dimon

Ветеран


Сообщения: 551
Благодарности: 13

Профиль | Отправить PM | Цитировать


     ^
     ||
Это был я

-------
Патроны кончаются... Санитары близко... Всем пока


Отправлено: 09:12, 09-09-2003 | #7


Аватара для Guest 80 247 100

Старожил


Сообщения: 466
Благодарности: 5

Профиль | Отправить PM | Цитировать


Dimon
Цитата:
А если вместо execvp попробовать fork()
..то у тебя скоро разведётся столько fork'ов чты и залогиниьтся не сможешь

Отправлено: 10:49, 09-09-2003 | #8


Пользователь


Сообщения: 70
Благодарности: 0

Профиль | Отправить PM | Цитировать


2makaveli
если xterm не крестиком закрывать, а exit (ctrl-d),  то всё будет рулез.

-------
nix rlz 4eva
m$ sux
I want GNU!


Отправлено: 14:57, 09-09-2003 | #9


Аватара для Dimon

Ветеран


Сообщения: 551
Благодарности: 13

Профиль | Отправить PM | Цитировать


Guest 80 247 100
Цитата:
..то у тебя скоро разведётся столько fork'ов чты и залогиниьтся не сможешь
Почему? Просвети.

-------
Патроны кончаются... Санитары близко... Всем пока


Отправлено: 16:47, 09-09-2003 | #10



Компьютерный форум OSzone.net » Linux и FreeBSD » Программное обеспечение Linux и FreeBSD » Программа spawn

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интернет - Программа NTScan. BROTHERHOOD Программное обеспечение Windows 0 01-10-2009 20:00
Нужна программа, определяющая, каким инсталлятором запакована программа yaryar Программное обеспечение Windows 3 24-06-2008 10:56
программа Rustem Вебмастеру 7 07-05-2008 11:37
программа на с++ gh6 Программирование и базы данных 4 24-10-2006 20:43
DOS-программа и XP Obolduy Microsoft Windows 2000/XP 4 15-04-2006 00:34




 
Переход