求3个不使用标准输入输出的UNIX命令,兼询重定向/管道疑问
不依赖标准输入/输出的UNIX命令及相关疑问解答
符合要求的UNIX命令示例
sleep:让当前进程暂停指定时长,比如sleep 10就是暂停10秒。它只需要命令行里的时间参数,既不读取标准输入,也不会往标准输出写任何内容,执行完成后直接退出。kill:给指定进程发送信号(默认是终止信号),只要传入进程ID或者进程名即可。默认情况下它既不读取标准输入,也不会向标准输出返回结果——只有执行出错时才会把错误信息输出到标准错误流(stderr),这不属于标准输出(stdout)的范畴。chmod:修改文件或目录的权限,比如chmod 755 test.txt。它只需要通过命令行参数指定权限值和目标文件,不需要读取标准输入,执行成功后也不会往标准输出写任何内容。
关于重定向/管道命令的判定
带重定向或管道的命令不算“不使用标准输入或标准输出”的情况,原因如下:
- 管道(
|)的核心逻辑就是把前一个命令的标准输出作为后一个命令的标准输入,直接用到了标准输入和输出通道; - 重定向(比如
>、<、>>)只是改变了标准输入的来源(从文件读取而非键盘)或者标准输出的去向(写入文件而非终端),本质上还是在使用标准输入/输出,并没有完全避开它们。
内容的提问来源于stack exchange,提问作者Nisarg Amlani
相关产品推荐
相关产品推荐

