Вот другое голосование за JMeter.
JMeter является инструментом тестирования загрузки с открытым исходным кодом, записанным в Java. Это способно к тестированию многих различных типов сервера (например, сеть, веб-сервисы, база данных, примерно что-либо, что использует запросы в основном).
Это действительно однако имеет крутую кривую обучения, как только Вы начинаете добираться до сложных тестов, но это определенно стоит того. Можно встать и работающий очень быстро, и в зависимости от того, какое стресс-тестирование Вы хотите сделать, который мог бы быть прекрасным.
Профессионалы:
Недостатки:
Никогда не использовать получает !!
7.19.7.2 The fgets function Synopsis 1 #include <stdio.h> char *fgets(char * restrict s, int n, FILE * restrict stream); Description 2 The fgets function reads at most one less than the number of characters specified by n from the stream pointed to by stream into the array pointed to by s. No additional characters are read after a new-line character (which is retained) or after end-of-file. A null character is written immediately after the last character read into the array. Returns 3 The fgets function returns s if successful. If end-of-file is encountered and no characters have been read into the array, the contents of the array remain unchanged and a null pointer is returned. If a read error occurs during the operation, the array contents are indeterminate and a null pointer is returned.
Итак, да , когда fgets ()
не возвращает NULL, целевой массив всегда имеет нулевой символ.
Если fgets ()
возвращает NULL, целевой массив мог быть изменен и может не иметь нулевой символ. Никогда не полагайтесь на массив после получения NULL от fgets ()
.
Редактировать Пример добавлен
$ cat fgets_error.c #include <stdio.h> void print_buf(char *buf, size_t len) { int k; printf("%02X", buf[0]); for (k=1; k<len; k++) printf(" %02X", buf[k]); } int main(void) { char buf[3] = {1, 1, 1}; char *r; printf("Enter CTRL+D: "); fflush(stdout); r = fgets(buf, sizeof buf, stdin); printf("\nfgets returned %p, buf has [", (void*)r); print_buf(buf, sizeof buf); printf("]\n"); return 0; } $ ./a.out Enter CTRL+D: fgets returned (nil), buf has [01 01 01] $
Видите? нет NUL в buf :)
man fgets:
fgets () считывает не более одного символа меньшего размера из потока и сохраняет их в буфер, на который указывает s. Чтение останавливается после EOF или новой строки. Если читается новая строка, она сохраняется в буфере. '\ 0' сохраняется после последнего символа в буфере.
Да, это так. From CPlusPlus.com
Считывает символы из потока и сохраняет их в виде строки C в str до тех пор, пока не будут прочитаны (num-1) символы или пока не будет достигнута новая строка или конец файла, в зависимости от того, что наступит. first.
Символ новой строки останавливает чтение fgets, но считается допустимым символом и поэтому включается в строку, скопированную в str.
Нулевой символ автоматически добавляется в str после прочитанных символов, чтобы сигнализировать о том, что конец строки C.