linux – 检测stdout是否被重定向到管道(而不是文件,字符设备,终端或套接字)?
|
理想情况下,这可以在
shell中编写脚本,但Perl或
Python可以.
我认识到重定向到FIFO(命名管道)可能与真实管道无法区分, 严格的POSIX解决方案是最好的,UNIX / Linux变体独立是最好的,但至少在Darwin(MacOS X)上运行的东西是我现在需要的. 在你写下答案之前 – I already know about 预期用例:我有一个命令应该在shell的反引号中运行, 如果在反引号中运行命令时shell会设置一些特殊的环境变量会有所帮助,但由于它可能特定于bash或zsh或其他东西,因此管道检测更为重要. 解决方法(我的评论转向按照Alex Dupuy的建议回答)既然你说你可以使用perl,我想你可以使用它的-p文件测试运算符( perldoc.perl.org/functions/-X.html);类似于perl -e’exit(-p STDOUT?0:1);’将告诉你stdout是否管道或fifo(没有区分它们). Fwiw,从shell调用它正是我使用perl -e的原因:) (编辑:东莞站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- linux – 向进程组的所有成员发送信号的最佳方法是什么?
- linux – 了解/ boot / config文件
- linux – sysfs_create_file()和sysfs_create_group()之间有
- 如果我捕获SIGSEGV并且信号处理程序导致另一个SIGSEGV会发生
- linux – 设置X11转发ssh
- linux – 意外地以root身份运行“chown www-data:www-data
- SAP Java:java.lang.NoClassDefFoundError:com.sap.conn.
- Linux getopt()函数 getopt_long()函数---转
- linux只按照每一行的第一个字母进行排序
- linux – 现代cpus如何处理跨页未对齐访问?
