nixp.ru v3.0

24 мая 2017,
среда,
12:54:50 MSK

DevOps с компанией «Флант»
Fatal написал 26 сентября 2004 года в 18:37 (461 просмотр) Ведет себя как мужчина; открыл 123 темы в форуме, оставил 484 комментария на сайте.

Доброго времени суток!

Не пойму в чем может быть проблема?

Что происходит при завершении процесса test.out (вообще говоря, должно передаваться упраление другой пограмме), который порождается программой a.out (исходник c++.cc), почему-то не передается управление «отцу». Это может быть какя-то проблема в библиотеки curses. Хотя я пробовал завершить ее. Пример который представлен ниже демонстрирует проблему. В этом примере должно напечататься «Hello, Unix! I’m glad to see you!» и именно на экране curses. Но этого не происходит.

//under FreeBSD

//filename: c++.cc

//to compile: c++ c++.cc -lncurses

#include

#include

#include

int main(void){

initscr();//инициализируем curses

addstr(«To start curses. Press any key…»);

getch();//задержка

/*эта часть была предложена в описании

curses для выхода в sheel и обратного возврата*/

//file:/usr/share/doc/ncurses/ncurses-intro.html#updating

//def_prog_mode();

//endwin();

execlp(«./test.out»,«test.out»,NULL);//порождение процесса

wait(NULL);

//refresh();

addstr(«Hello, Unix! I’m glad to see you!»);

getch();

endwin();

return 0;

}

//filename: cc.cc

//to compile: c++ cc.cc -o test.out

#include

int main(void){

getchar();//may be sleep(5) is in

return 0;

}

Uncle Theodore
Fatal
Доброго времени суток!

Не пойму в чем может быть проблема?

<..> почему-то не передается управление «отцу».

execlp(«./test.out»,«test.out»,NULL);//порождение процесса

$ man execlp

The exec family of functions replaces the current process

image with a new process image.

Потому что нету больше отца… Пользуй fork()

Good Luck,

UT

Fatal

Мне бы нужно, что бы потомок возвращал управление и не был копией отца, как в случае fork().

Как это можно осуществить?

Uncle Theodore

man 3 system

Good Luck,

UT

Fatal

Many thanks