如何测试STDIN读错误

时间:2014-03-16 16:55:09

标签: linux assembly stdin

我有一个Linux程序(当前处于程序集中)有一个检查:如果从STDIN读取失败,则显示错误消息。问题是我不知道如何测试这个条件,如何执行程序使它从STDIN读取失败。 IT必须在没有STDIn的情况下运行,否则STDIN可能会在程序启动前关闭一些程序?

1 个答案:

答案 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)
相关问题