Перейти к содержанию

Рекомендуемые сообщения

Опубликовано

Написал программу с единственной функцией main(), которая коннектится к irc и выполняет некие действия. Когда разрабатывал, сделал специально команду puts("connected"); чтобы узнать когда подключится. Программу доделал, необходимость в строке отпала и пришлось ее удалить. В результате программа отказалась работать. Я ставил на это место другие операции, но работала только puts(). Ниже привожу кусок кода:

....

//bzero((char *)&hp, sizeof(hp));

to.sin_family=AF_INET;

to.sin_port = htons(port);

strcpy(nmapcmd, "nmap -sS -O ");

if((hp=gethostbyname(hostname))==NULL) exit(-1);

memcpy((char *)&to.sin_addr.s_addr, hp->h_addr, hp->h_length);

if((sckt = socket(AF_INET, SOCK_STREAM, 0)) == -1) exit (-1);

if(connect(sckt,(struct sockaddr *)&to, sizeof(to))==0){

//puts("connected");

dup2(sckt, 0); dup2(sckt, 1); dup2(sckt, 2);

fputs(nick, stdout);

fputs(user, stdout);

fputs(chan, stdout);

while (!feof(stdin)) {

.....

Кто может обьяснить столь странное поведение программы?

Опубликовано

Возможно, виновата оптимизация. Попробуйте использовать -О1. У меня было подобное, но при работе с STL из нескольких потоков.

Ещё, как вариант, перед использованием dup2(sckt, 0); dup2(sckt, 1); dup2(sckt, 2); можно попробовать закрыть stdin, stdout и stderr. Да и зачем вообще использовать это переназначение? Почему бы не писать в sckt со спокойной душой?

Кстати, проверьте возвращаемые значения функций dup2 и других. И сообщите, что значит "отказалась работать" (сообщение об ошибке? core dump?) и версию компилятора.

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...