spawn*
Хотел использовать функцию spawnl, но не обнаружил соотвтетствующего *.h (насколько я знаю это process.h). Комляторы gcc/g++ установлены, библиотек разных тоже куча. В чём может быть дело ? Linux Mandrake 10
Скорее всего при установке системы не установил исходные тексты. они должны располагаться в /usr/src/...
Я сам буду на выходных Linux Mandrake 10, так что смогу добавить более конкретно.
Скорее всего при установке системы не установил исходные тексты. они должны располагаться в /usr/src/...
Я сам буду на выходных Linux Mandrake 10, так что смогу добавить более конкретно.
Вообще-то все *.h лежат в /usr/include/.. Но я, честно говоря, сомневаюсь, в том, что при установке не поставил какой-то "галочки", так чтобы всё было, а spawn* не было. Кстати, также не находит функции tell().
tell - линукс понимает только как команду языка Tcl/TK, или как функцию perl'a.
spawnl - тоже в линухе отсутствует, т.к. не соответствует стандарту POSIX 1003.1 Об этом смотрите здесь: http://www.qnx.com/developers/docs/momentics621_docs/neutrino/lib_ref/s/spawnl.html
В замен spawnl подойдет fork() - читайте документацию.
В место tell() - ftell(), если я правильно понял вашу идею.
Ребята, а с чего вы взяли, что такие функции обязаны быть в линухе? Что spawnl, что tell отсутствуют в стандарте Cи и зависят от реализации конкретной ОС.
tell - линукс понимает только как команду языка Tcl/TK, или как функцию perl'a.
spawnl - тоже в линухе отсутствует, т.к. не соответствует стандарту POSIX 1003.1 Об этом смотрите здесь: http://www.qnx.com/developers/docs/momentics621_docs/neutrino/lib_ref/s/spawnl.html
В замен spawnl подойдет fork() - читайте документацию.
В место tell() - ftell(), если я правильно понял вашу идею.
Этого и следовало ожидать, POSIX, вечно он портит жизнь ;-) Кстати, по ссылочке, что ты дал, написано, что spawnp() и spawn() удовлетворяют позиксам. Однако, их тоже в линухе нет. Может быть, конечно же, этот позикс не 1003.1, о котором ты упомянул, но всё же позикс. Форки, екзеки - с ними всё понятно. Хотелось просто меньше возни испытать при портировании из qnx в Linux.
p.s.
Вместо tell использую lseek(handle, 0, SEEK_CUR);
В Linux вместо spawn используется функция fork() и семейство функций exec() (execl, execv, execle, execlp, execve, execvp). Все дело в том, что в Unix-системах не такой примитивный механизм порождения процессов, как в других системах (не будем показывать пальцем:-))
В Linux вместо spawn используется функция fork() и семейство функций exec() (execl, execv, execle, execlp, execve, execvp).
А мы без вашего руководства этого конечно не знали. Бааальшое спасибо ;)
Вы предыдущие посты вообще читали? Хотя бы последний пост Absolut'а: "Форки, екзеки - с ними всё понятно".
Все дело в том, что в Unix-системах не такой примитивный механизм порождения процессов, как в других системах
Ну-ну... Воздержусь от обширного потока флуда, скажу только, что если взять win32, то там вместо нового процесса создается поток и не надо смешивать fork() и CreateProcess - у них совсем разное назачение.