LINUX.ORG.RU

Стоп!

В С++ или в скрипте?

С++:


#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);
}

BreadFan ★★
()
Ответ на: комментарий от BreadFan

Где в литературе можно почитать про системные вызовы?

anonymous
()

2-ая часть man содержит описание системных вызовов, например, man 2 mount.
Список можно найти в соответствующей man-директории.
Рекомендация char *run; sprintf(run, ... либо приведет к немедленному гроху (место под строку не выделено и run смотрит в небеса), либо к сложно обнаруживаемой ошибке в дальнейшем. Т.ч. лучше не парить и либо (хватит?) char s[80], либо выделять через malloc.

io ★★
()

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!


anonymous (*) (2002-11-27 12:21:25.751):
> Где в литературе можно почитать про системные вызовы?
man syscalls
http://www.infran.ru/TechInfo/syscalls/syscalls_toc.html
http://www.lxhp.in-berlin.de/lhpsyscc.html

Die-Hard ★★★★★
()

Слушайте, вы че на меня набросились? Чувак задал вопрос "как из С плац плац вызвать системные функции", я ответил. Или нет? а с памятью- ваще пальцы раскинули как будто я с дерева слез и написал код. Че мне вам написать еще как g++ вызывать? чей сами догадаетесь память-то выделить. Ваще ну и народ пошел!
Бл#ь еще и код осквернили! ЦеПП враппер... Слов цензурных не хватает. Вот и давай потом советы!
Формулируйте КОНКРЕТНО вопрос, получите нормальный ответ...

BreadFan ★★
()
Ответ на: комментарий от BreadFan

BreadFan (*) (2002-11-27 16:04:38.88):
> Слушайте, вы че на меня набросились?
Кто на тебя набрасывался? Просто исправили твою ошибку.

> Чувак задал вопрос "как из С плац плац вызвать системные функции", я ответил.
Во-первых, чувак-то не это спросил (а что он спросил, я не понял).
Во-вторых, на СВОЙ вопрос ты неправильно ответил. Т.е., конечно, твоим способом
пользоваться можно, но - черезжопно несколько. Сисколлы дергаются из ЦеПП
прямо; нет нужды дергать их через перевызов оболочки.

>...еще и код осквернили!
Ок, прошу прощения, мое замечание про "корявый ЦеПП" к делу не относится.

Вообще, если я тебя задел, то прошу прощения.

Die-Hard ★★★★★
()

> Слушайте, вы че на меня набросились?

Анекдот, про то, как у одного новорусского сломалась машина и как к нему подошел и помог советом другой новорусский, знаешь ???

> я ответил. Или нет?

В первом ответе ты сделал ошибку. Во второй ее исправил и добавил новую. Ну и чего ты хотел ?? Нобелевской премии за успехи в computing sience ?

> а с памятью- ваще пальцы раскинули как будто я с дерева слез и написал код.

Ты, типа извини за прадву-матку, но выглядит все ИМЕННО ТАК. ;-))))

LamerOk ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.