xdude
![](http://forum.ru-board.com/board/avatars/Bert.gif)
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору lakerdes насчёт сигналов - не знаю, а насчет неправильно объяснил - я так понял, что надо запустить приложение в фоне, по типу как если бы это из bash сделать командой "/usr/local/bin/some_app &". Кусок кода, который я тебе написал, именно это и делает, это кусок утилиты, с помощью которой я когда-то запускал фоновые процессы, занимающиеся длительной обработкой больших объёмов данных. После форка в дочернем процессе закрываются все стандартные дескрипторы и делается exec, который и произойдёт в фоновом режиме. А в родительском процессе работа продолжается как и прежде, т.е., если это shell - то можно продолжить считывание команд из консоли. Может, ты не в курсе как работает fork? Вот на всякий случай тебе этот же код с небольшим продолжением и пояснениями: Код: // Здесь происходит разветвление на материнский и дочерний процессы pid_t pid=vfork(); if (pid==0) { // Мы в дочернем процессе, закрываем дескрипторы и выполняем exec close(0); close(1); close(2); if (-1==execve(argv[1],&argv[1],NULL)) { // Дочернему процессу не удалось исполнить необходимую программу fprintf(stderr,"Error executing process\n"); return -3; }; // Здесь дочерний процесс завершает свою работу return 0; } else if (pid==-1) { // Вызов fork не удался, дочерний процесс не создан printf("Failed to spawn process\n"); return -1; } // Мы в материнском процессе, дочерний процесс создан и работает в фоне printf("Spawned process executed successfully\n"); // Далее можно продолжать нормальную работу материнского процесса, например. продолжить считывание команд из консоли | Abs62 Цитата: Микрософтовская. VC 7.0 даёт имено такой результат. | Никогда не доверял маздаю ) Даже когда под ним сидел - писал под gcc/mingw. А теперь вообще на макось перешел. | Всего записей: 481 | Зарегистр. 04-11-2004 | Отправлено: 21:10 12-12-2007 | Исправлено: xdude, 21:14 12-12-2007 |
|