URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 3293
[ Назад ]

Исходное сообщение
"Помогите чайнику."

Отправлено Teap0t , 18-Авг-04 12:14 
Доброго времени суток.
Есть вопрос - как мне на С (под FreeBSD) выполнить запуск определенного приложения или команды ?
например:  fetch,lynx,trafshow.

Содержание

Сообщения в этом обсуждении
"Помогите чайнику."
Отправлено jd , 18-Авг-04 12:43 
>Доброго времени суток.
>Есть вопрос - как мне на С (под FreeBSD) выполнить запуск определенного
>приложения или команды ?
>например:  fetch,lynx,trafshow.

man system(3), exec(3), etc


"Помогите чайнику."
Отправлено chip , 18-Авг-04 16:54 
>Доброго времени суток.
>Есть вопрос - как мне на С (под FreeBSD) выполнить запуск определенного
>приложения или команды ?
>например:  fetch,lynx,trafshow.

fork(2), exec(3), popen(3)


"Помогите чайнику."
Отправлено Teap0t , 20-Авг-04 18:07 
Большое спасибо - за помощь.
Есть еще пару вопросов.
1- как преобразовать на Си число в строку?
2- где указывать глобальные переменные?

Не сочтите за труд- жду ответа не теряя времени и читая мануал.



"Помогите чайнику."
Отправлено chip , 21-Авг-04 13:11 
>Большое спасибо - за помощь.
>Есть еще пару вопросов.
>1- как преобразовать на Си число в строку?

char buf[<SIZE>];
sprintf(buf, "%d", <NUMBER>);

, где <SIZE> - соотвественно размер буфера
      <NUMBER> - число, которое будет "преобразовано" в строку. Результат в buf


>2- где указывать глобальные переменные?

int global_variable;

int
main() { return 0; }



"Помогите чайнику."
Отправлено Bonny , 25-Авг-04 13:39 
>>Доброго времени суток.
>>Есть вопрос - как мне на С (под FreeBSD) выполнить запуск определенного
>>приложения или команды ?
>>например:  fetch,lynx,trafshow.
>
>fork(2), exec(3), popen(3)

Мне тоже нужна ваша помощь, пожалуйста ответьте...
Я программирую в Suse Linux 7.3, у меня возникла проблемка, но man пока не установлен и вообще нет документации...

При использовании fork в таблице состояния родительского процесса дочерний процесс показан как зомби, хотя дочерний запускается и отрабатывает нормально. Анализируя ситуацию, заметила, что родительский процесс не ждет завершения дочернего. В интернете прочла, что существуют опции линукса __WCLONE, __WALL, __WNOTHEREAD, которые определяют - ожидать или нет.
Вопрос следующий: как проверить значение этих опций и переустановить при необходимости?


"Помогите чайнику."
Отправлено klalafuda , 25-Авг-04 13:42 
>>>Доброго времени суток.
>>>Есть вопрос - как мне на С (под FreeBSD) выполнить запуск определенного
>>>приложения или команды ?
>>>например:  fetch,lynx,trafshow.
>>
>>fork(2), exec(3), popen(3)
>
>Мне тоже нужна ваша помощь, пожалуйста ответьте...
>Я программирую в Suse Linux 7.3, у меня возникла проблемка, но man
>пока не установлен и вообще нет документации...
>
>При использовании fork в таблице состояния родительского процесса дочерний процесс показан как
>зомби, хотя дочерний запускается и отрабатывает нормально. Анализируя ситуацию, заметила, что
>родительский процесс не ждет завершения дочернего. В интернете прочла, что существуют
>опции линукса __WCLONE, __WALL, __WNOTHEREAD, которые определяют - ожидать или нет.
>
>Вопрос следующий: как проверить значение этих опций и переустановить при необходимости?

man signal -> SIGCHLD
man wait/waitpid

все остальное от лукавого

// wbr


"Помогите чайнику."
Отправлено Bonny , 26-Авг-04 10:11 
>>>>Доброго времени суток.
>>>>Есть вопрос - как мне на С (под FreeBSD) выполнить запуск определенного
>>>>приложения или команды ?
>>>>например:  fetch,lynx,trafshow.
>>>
>>>fork(2), exec(3), popen(3)
>>
>>Мне тоже нужна ваша помощь, пожалуйста ответьте...
>>Я программирую в Suse Linux 7.3, у меня возникла проблемка, но man
>>пока не установлен и вообще нет документации...
>>
>>При использовании fork в таблице состояния родительского процесса дочерний процесс показан как
>>зомби, хотя дочерний запускается и отрабатывает нормально. Анализируя ситуацию, заметила, что
>>родительский процесс не ждет завершения дочернего. В интернете прочла, что существуют
>>опции линукса __WCLONE, __WALL, __WNOTHEREAD, которые определяют - ожидать или нет.
>>
>>Вопрос следующий: как проверить значение этих опций и переустановить при необходимости?
>
>man signal -> SIGCHLD
>man wait/waitpid
>
>все остальное от лукавого
>
>// wbr

Спасибо!

Справилась с образующимися зомби, определив
signal(SIGCHLD, SIG_IGN);

А как это же из shell'а сделать?


"Помогите чайнику."
Отправлено Murr , 03-Сен-04 17:43 
>
>А как это же из shell'а сделать?


shell обычно сам обрабатывает завершение своих процессов.
чтобы повесить на завершение процессов опр. действие см. man trap
или help trap


"Помогите чайнику."
Отправлено Андрей , 04-Сен-04 11:02 
>>>Доброго времени суток.
>>>Есть вопрос - как мне на С (под FreeBSD) выполнить запуск определенного
>>>приложения или команды ?
>>>например:  fetch,lynx,trafshow.
>>
>>fork(2), exec(3), popen(3)
>
>Мне тоже нужна ваша помощь, пожалуйста ответьте...
>Я программирую в Suse Linux 7.3, у меня возникла проблемка, но man
>пока не установлен и вообще нет документации...
>
>При использовании fork в таблице состояния родительского процесса дочерний процесс показан как
>зомби, хотя дочерний запускается и отрабатывает нормально. Анализируя ситуацию, заметила, что
>родительский процесс не ждет завершения дочернего. В интернете прочла, что существуют
>опции линукса __WCLONE, __WALL, __WNOTHEREAD, которые определяют - ожидать или нет.
>
>Вопрос следующий: как проверить значение этих опций и переустановить при необходимости?

Если ещё не разобралась - надо использовать waitpid для ожидания процессса.


"Помогите чайнику."
Отправлено Bonny , 14-Сен-04 06:59 
>Если ещё не разобралась - надо использовать waitpid для ожидания процессса.

Я писала 25 августа: "родительский процесс не ждёт завершения дочернего", т. е. я уже использовала wait.
После переопределения действия по сигналу SIGCHLD, с wait стало нормально, но почему-то родитель получает статус ненормального завершения дочернего процесса, хотя тот завершается - ok.
Ох, уж этот LINUX... С AIX'ом такой проблемы не было...