我有一个Linux
程序(当前处于程序集中)有一个检查:如果从STDIN
读取失败,则显示错误消息。问题是我不知道如何测试这个条件,如何执行程序使它从STDIN读取失败。 IT必须在没有STDIn的情况下运行,否则STDIN可能会在程序启动前关闭一些程序?
答案 0 :(得分:3)
是的,您可以关闭文件描述符,这将触发错误。使用bash
进行测试:
$ strace ./a.out 0<&-
execve("./a.out", ["./a.out"], [/* 32 vars */]) = 0
[ Process PID=4012 runs in 32 bit mode. ]
read(0, 0xffe13fec, 1) = -1 EBADF (Bad file descriptor)
您还可以激发手册页中列出的其他错误,例如:
$ strace ./a.out 0</tmp
execve("./a.out", ["./a.out"], [/* 32 vars */]) = 0
[ Process PID=4056 runs in 32 bit mode. ]
read(0, 0xffed5c0c, 1) = -1 EISDIR (Is a directory)