The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Почему после exec остальная часть программы не выполняется?, !*! NetKnight, 26-Авг-03, 15:50  [смотреть все]
Вот такой код:

#include <stdio.h>
#include <stdlib.h>

void errmsg(char *name)
{
printf("Usage: %s {start|stop} {105|106}\n",name);
exit(0);
}

void errfil()
{
printf("Error: File flags.conf is not found!\n");
exit(0);
}

int main(int argc, char **argv)
{
char f[2],uf,ff,*act,*cl,*name=argv[0];
FILE *fil;
int pos;

if (argc<3) errmsg(name);

if (strcmp(argv[1],"start")==0) { act="-D"; uf='1'; }
else if (strcmp(argv[1],"stop")==0) { act="-I"; uf='0'; }
else { errmsg(name); }

if (strcmp(argv[2],"105")==0)
{
  cl="105";
  pos=0;
}
else if(strcmp(argv[2],"106")==0)
{
  cl="106";
  pos=1;
}
else { errmsg(name); }

if ((fil=fopen("flags.conf","r"))==0) errfil();
fscanf(fil,"%s",&f);
fclose(fil);

ff=f[pos];
f[pos]=uf;

if(ff!=uf)
{
  execlp("/usr/local/sbin/iptables","iptables","-t","nat",act,"PREROUTING","-j",cl,NULL);
  perror("Exec error");
  exit(1);
}
else
{ printf("Error: Nothing to change!"); }

if ((fil=fopen("flags.conf","w"))==0) errfil();
fprintf(fil,"%s",f);
fclose(fil);

return 0;
}

Почему-то после execlp ничего не выполняется, но программа отрабатывает без ошибок. В чём грабли? Может я экзек не правильно юзаю?




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру