Qt Qprocess 调用linux命令修改ip地址

Qprocess类用于调用外部程序,可以和他们通信。接口建议去看qt官方文档

1.用ui画个简单的界面。

2.获取网卡,提供一个combox供用户选择

QList<QNetworkInterface> list = QNetworkInterface::allInterfaces();//获取网卡放到list中
    foreach (QNetworkInterface interface, list) {    //取出list节点中的QNetworkInterface
        qDebug()<<"Device:" <<interface.name();
        ui->devcieList->addItem(interface.name());//添加到combox中

 3.点击update时完成修改对应text里的ip,跳转槽后开始编辑代码:

1.初始化一个Qstring对象用来存命令:

QString cmd = "sudo -S ifconfig ";
    cmd += ui->devcieList->currentText() + " "; //combox获取网卡
    cmd += ui->inputip->text();
    cmd += " netmask 255.255.255.0";
    cmd += " \n";

    qDebug() << "cmd" <<cmd;

2.声明一个Qprocess对象用来进行shell命令执行

QProcess process;
    process.setProcessChannelMode(QProcess::MergedChannels);
    process.start("bash");
    if(!process.waitForStarted())
    {
        qDebug() << "Failed to start process";
        return;
    }

    process.write(cmd.toUtf8());
    process.waitForBytesWritten();

    QString passwd = ui->passwd->text() + "\n";         //text上读取密码
    process.write(passwd.toUtf8());
    process.waitForBytesWritten();
    process.closeWriteChannel();
    process.waitForFinished();

    QString output = process.readAll();
    qDebug() << "output:" <<output;

setProcessChannelMode:设置process信道模式;

start:在新进程中启动给定程序,bash进入linux shell执行步骤;不阻塞状态;

write:开始读cmd中的命令行。

waitforBytesWritten:阻塞等待write结束。

这样输入新的ip地址后就可以修改linux本机的IP了。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值