xdiman Опубликовано 1 марта, 2005 Жалоба Опубликовано 1 марта, 2005 Написал программу с единственной функцией 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)) { ..... Кто может обьяснить столь странное поведение программы? Цитата
EL[michlen] Опубликовано 2 марта, 2005 Жалоба Опубликовано 2 марта, 2005 Возможно, виновата оптимизация. Попробуйте использовать -О1. У меня было подобное, но при работе с STL из нескольких потоков. Ещё, как вариант, перед использованием dup2(sckt, 0); dup2(sckt, 1); dup2(sckt, 2); можно попробовать закрыть stdin, stdout и stderr. Да и зачем вообще использовать это переназначение? Почему бы не писать в sckt со спокойной душой? Кстати, проверьте возвращаемые значения функций dup2 и других. И сообщите, что значит "отказалась работать" (сообщение об ошибке? core dump?) и версию компилятора. Цитата
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.