- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
#include <unistd.h>
#include <assert.h>
#include <stdlib.h>
#include <string.h>
// grep ^\s*$ file1 file2 ... | wc -l
int main(int argc, const char **argv)
{
int fd[2];
pid_t pid;
assert(!pipe(fd));
assert((pid = fork()) >= 0);
if (!pid)
{
char **newargv;
assert(dup2(fd[1], 1) == 1);
assert(!close(fd[0]));
assert(!close(fd[1]));
assert(newargv = malloc((argc + 2) * sizeof(char *)));
newargv[0] = "grep";
newargv[1] = "^\\s*$";
memcpy(newargv + 2, argv + 1, (argc + 1) * sizeof(char *));
assert(execvp("grep", newargv) * 0);
}
assert((pid = fork()) >= 0);
if (!pid)
{
assert(dup2(fd[0], 0) == 0);
assert(!close(fd[0]));
assert(!close(fd[1]));
assert(execlp("wc", "wc", "-l", NULL) * 0);
}
assert(!close(fd[0]));
assert(!close(fd[1]));
while (wait(NULL) != -1);
return 0;
}
guest 16.04.2010 01:38 # +2.4
guest 16.04.2010 01:55 # +0.6
guest 16.04.2010 08:15 # +2
FAIL!
guest 16.04.2010 08:59 # +2.2
Это как в анекдоте про динозавра:
- Девушка, скажие, какова вероятность что вы сейчас на улице увидите динозавра?
- 50 на 50! Либо увижу, либо нет!
guest 16.04.2010 10:31 # 0
guest 16.04.2010 11:16 # +1.6
guest 16.04.2010 13:21 # +1.8
TarasB 16.04.2010 20:39 # +1
guest 16.04.2010 21:24 # +2
guest 16.04.2010 21:39 # 0
linux-hacker 16.04.2010 23:23 # +2
guest 16.04.2010 09:19 # +1
guest 16.04.2010 10:20 # −0.8
guest 16.04.2010 18:54 # 0
guest 16.04.2010 19:29 # 0
guest 16.04.2010 21:39 # −1
linux-hacker 16.04.2010 23:24 # 0
Dummy00001 18.04.2010 03:26 # +1
я когда тестированием занимался, это был дежурный стиль для писания тест кейсов. и не только.
иначе из-за /красивой/ обработки ошибок просто на все времени никогда не хватит. и шансы сделать ошибку в самой обработке ошибок тоже возрастают.
ЗЫ в программе есть ровно одна ошибка: в начале должно стоять:
#if defined(NDEBUG)
# undef NDEBUG
#endif
после этого все чики пыки - за исключением пачки (легко фиксуемых) ворнингов.