exec操作文件描述符

exec命令可以用来替代当前shell;换句话说,并没有启动子shell。使用这一命令时任何环境都将被清除,并重新启动一个shell。

它的一半形式为:

    exec command

    其中,command通常是一个shell脚本。

    描述exec命令最贴切的说法是:它践踏了你当前的shell。

    当这个脚本结束了,相应的会话可能也就结束了。

    但是,exec在对文件描述符进行操作的时候(也只有在这个时候),它不会覆盖你当前的shell。

 

    下面举几个例子:

    1、exec 3</tmp/1.txt     //以“只读方式”打开/tmp/1.txt,文件描述符对应为3

    2、exec 3>/tmp/1.txt     //以“只写方式”打开/tmp/1.txt,文件描述符对应为3

    3、exec 3<>/tmp/1.txt    //以“读写方式”打开/tmp/1.txt,文件描述符对应为3

    4、exec 3<&-             //关闭文件描述符3

 

    附录:常见的文件重定向命令

    command > filename                      把标准输出重定向到一个新文件中

    command >> filename                    把标准输出重定向到一个文件中(追加)
    command 1 > fielname                       把标准输出重定向到一个文件中
    command > filename 2>&1                 把标准输出和标准错误一起重定向到一个文件中
    command 2 > filename                       把标准错误重定向到一个文件中
    command 2 >> filename                     把标准输出重定向到一个文件中(追加)
    command >> filename 2>&1              把标准输出和标准错误一起重定向到一个文件中(追加)
    command < filename >filename2        把command命令以filename文件作为标准输入,以filename2文件作为标准输出
    command < filename                          把command命令以filename文件作为标准输入
    command << delimiter                      把从标准输入中读入,直至遇到delimiter分界符
    command <&m                                 把文件描述符m作为标准输入
    command >&m                                 把标准输出重定向到文件描述符m中
    command &m<&-                             关闭文件描述符m

转载于:https://www.cnblogs.com/xhyan/p/6554051.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Qt中,可以使用QSerialPort类来打开串口,并且不需要直接获取文件描述符。QSerialPort类提供了一组用于读写串口数据的方法和信号,可以更加方便和安全地操作串口。 下面是一个简单的示例代码,用于打开一个串口并发送数据: ``` #include <QCoreApplication> #include <QSerialPort> #include <QSerialPortInfo> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // 查找可用的串口 QList<QSerialPortInfo> ports = QSerialPortInfo::availablePorts(); if (ports.isEmpty()) { qWarning() << "No serial ports found"; return 1; } // 打开第一个可用的串口 QSerialPort serialPort(ports.at(0)); if (!serialPort.open(QIODevice::ReadWrite)) { qWarning() << "Failed to open serial port"; return 1; } // 发送数据 QByteArray data("Hello, world!"); serialPort.write(data); // 关闭串口 serialPort.close(); return a.exec(); } ``` 在上面的代码中,我们首先调用QSerialPortInfo::availablePorts()方法查找当前可用的串口,然后通过QSerialPort类打开第一个可用的串口,并发送了一些数据。如果打开或发送数据失败,将会输出警告信息。 需要注意的是,由于串口通信是异步的,因此我们需要等待数据发送完成后才能关闭串口。在上面的代码中,我们使用了Qt的事件循环机制来等待程序退出。如果你不需要这样做,也可以使用QSerialPort::waitForBytesWritten()方法等待数据发送完成。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值