catalpa-bungei 发表于 2023-9-17 11:08:27

bash 语法中<&-的输出

add.exe是一个将两数之和cout出来的由cpp编译而来的文件
在bash脚本中输入:
$ ./add <&-
输出是:
1471690622
请问这个输出的含义是什么?

isdkz 发表于 2023-9-17 11:08:30

这个输出的含义是将文件描述符0(标准输入)关闭后,执行了add.exe程序并输出了1471690622。

在bash脚本中,"<&-"表示关闭标准输入。当执行"./add <&-"命令时,文件描述符0(标准输入)被关闭,add.exe程序无法从标准输入中读取数据。因此,add.exe程序会直接执行并将结果输出到标准输出,即文件描述符1。输出的1471690622是add.exe程序计算后的结果。

陶远航 发表于 2023-9-17 11:08:34

这个输出 "1471690622" 是一个整数值,它代表了程序的退出状态码(exit status code)。在 Unix/Linux 系统中,程序执行完毕后会返回一个状态码,其中 0 表示程序正常退出,而其他非零值则表示程序运行出现了错误或者异常。

在这个例子中,由于输入重定向符 < 已经关闭了标准输入流(stdin),所以当程序尝试从 stdin 中读取数据时会遇到错误,因此程序产生了一个非零的退出状态码,并将该状态码作为输出结果。注意,由于这个状态码是由当前时间戳生成的,因此每次运行程序的退出状态码都可能不同。

总之,这个输出值表示程序执行异常并返回了一个非零退出状态码。
如果问题已经解决,请设置最佳答案
页: [1]
查看完整版本: bash 语法中<&-的输出