在我的代码中很多时候我都有这样的块:
close(READ);
dup(fd[READ]);
close(fd[READ]);
execl("ay", "bee", NULL);
如何避免一堆
if (close(READ) == -1) {
perror("close");
exit(EXIT_FAILURE);
}
...repeat for each function...
或者有什么好的做法来处理这个问题?
我试过这样的事情:
void test_returns(int result, char * err) {
if (result == -1) {
perror(err);
exit(EXIT_FAILURE);
}
}
/* code */
test_returns(close(READ), "close");
test_returns(dup(fd[READ]), "dup");
test_returns(close(fd[READ]), "close");
test_returns(execl("ay", "bee", NULL), "execl");
但我认为这不是一个好方法。对此有什么好的解决方案?