console system()c ++无限循环,同时尝试执行ipconfig

时间:2017-04-18 01:47:30

标签: c++ console-application

我目前正在从头开始学习c ++,我之前使用Visual Studio开发了使用C#的应用程序,但我是一个使用C ++的总体菜鸟,我正在尝试制作一个小的控制台exe,它会释放并更新ip而练习使用标题和不同的.cpp文件。

问题在于,当我从visual studio 2015运行本地Windows调试器时,代码运行完美并完成我正在尝试的所有内容。但是当我构建并尝试运行.exe文件时,它会进入一个无限循环,无休止地说明std :: cout<<<“Realizando ipconfig Release”的输出,我已将问题本地化,当它试图运行system(“ipconfig / release”)。为什么会这样?我该如何解决?

这是标题

#pragma once
#ifndef HeaderIp
#define HeaderIp
int Release();
int Renew();
#endif // !HeaderIp

这是release.cpp

   #include <stdlib.h>
int Release()
{
    if (system(nullptr)==0)
    {
        return 0;
    }
    else
    {
        system("ipconfig /release");
        return 1;
    }
}

这是renew.cpp

#include <stdlib.h>;
int Renew()
{
    if (system(nullptr)==0)
    {
        return 0;
    }
    else
    {
        system("ipconfig /renew");
        return 1;
    }
}

最后这是ipconfig.cpp

#include <iostream>
#include <stdlib.h>
#include "HeaderIp.h"
#include <stdio.h>

int main()
{   
    std::cout << "Realizando ipconfig Release" << std::endl;
    int i = 0;                                                      //Bit de informacion de status de CPU
    i = Release();
    if (i == 0)
    {
        std::cout << "Error al liberar IP" << std::endl;
        system("pause");
        exit;
    }
    else
    {
        std::cout << "Ip Liberado correctamente" << std::endl;
    }
    i = Renew();
    if (i == 0)
    {
        std::cout << "Error al renovar IP" << std::endl;
        system("pause");
        exit;
    }
    else
    {
        std::cout << "Ip renovado correctamente" << std::endl;
    }

system("pause");
return 0;

}

1 个答案:

答案 0 :(得分:0)

在C ++中使用system通常discouraged是不寻常的。如果您前往manage DHCP leases using IpReleaseAddress and IpRenewAddress,则可能会发现您的问题消失

您也可以使用std::cin.sync()代替system("pause")

exit;可能无法达到你想要的效果,因为你只是引用到该功能,你不会通话它,所以......它

#include <stdlib.h>;中的分号是错误的,您应该包括<cstdlib><cstdio>而不是<stdlib.h><stdio.h>