我有一个Linux
程序(目前在汇编中)有一个检查:如果从STDIN
读取失败,显示一个错误消息。 问题是,我不知道如何testing这个条件,如何执行这个程序,使它无法读取STDIN。 IT必须在没有STDIn的情况下运行,否则STDIN会在程序启动之前closures一些?
是的,你可以关闭文件描述符,这将触发一个错误。 测试使用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)