Стоп!
В С++ или в скрипте?
С++:
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
void main(){
char s[80];
cin.getline(s,80);
sprintf(s,"iptables %s", s);//по-моему такое проходит
//если нет, используем strcat
system(s);
}
2-ая часть man содержит описание системных вызовов, например, man 2 mount.
Список можно найти в соответствующей man-директории.
Рекомендация char *run; sprintf(run, ... либо приведет к немедленному гроху (место под строку не выделено и run смотрит в небеса), либо к сложно обнаруживаемой ошибке в дальнейшем. Т.ч. лучше не парить и либо (хватит?) char s[80], либо выделять через malloc.
anonymous (*) (2002-11-27 10:41:45.515):
> ...как в скрипте выполнить ввод системных команд,
Как-то не очень понятен вопрос :)
BreadFan (*) (2002-11-27 12:02:25.132):
Два замечания.
Первое:
> ой парю-парю... лучше не
> sprintf(s,"iptables %s", s);
> ,а
> char* run;
> sprintf(run,"iptables %s", s);
Рискуешь получить нечто типа segv; во всяком случае, стек попортишь.
Надо char* run; => char run[80];
Второе:
Ты, вообще, подумал, что ты предлагаешь?
Допустим, ты скомпилил свой код в файл superpuperiptables. Теперь, вместо того,
чтобы набирать, допустим,
iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP
тебе придется набирать
superpuperiptables -A INPUT -s 127.0.0.1 -p icmp -j DROP
За что боролись?
Т.е. фактически ты написАл на корявом ЦеПП враппер к ... sprintf!
Слушайте, вы че на меня набросились? Чувак задал вопрос "как из С плац плац вызвать системные функции", я ответил. Или нет? а с памятью- ваще пальцы раскинули как будто я с дерева слез и написал код. Че мне вам написать еще как g++ вызывать? чей сами догадаетесь память-то выделить. Ваще ну и народ пошел!
Бл#ь еще и код осквернили! ЦеПП враппер... Слов цензурных не хватает. Вот и давай потом советы!
Формулируйте КОНКРЕТНО вопрос, получите нормальный ответ...
BreadFan (*) (2002-11-27 16:04:38.88):
> Слушайте, вы че на меня набросились?
Кто на тебя набрасывался? Просто исправили твою ошибку.
> Чувак задал вопрос "как из С плац плац вызвать системные функции", я ответил.
Во-первых, чувак-то не это спросил (а что он спросил, я не понял).
Во-вторых, на СВОЙ вопрос ты неправильно ответил. Т.е., конечно, твоим способом
пользоваться можно, но - черезжопно несколько. Сисколлы дергаются из ЦеПП
прямо; нет нужды дергать их через перевызов оболочки.
>...еще и код осквернили!
Ок, прошу прощения, мое замечание про "корявый ЦеПП" к делу не относится.