我有以下代码:虽然真正的工作不
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
time_t result;
char hostname[10] = "ws45new";
char graphite[10] = "127.0.0.1";
char buf[1024];
int n = 0;
int num = 0;
int graphiteport = 2003;
while (1 == 1)
{
result = time(NULL);
n = n + 1;
if (n >= 100)
n = 0;
printf("\n %d", n);
// snprintf(buf, sizeof(buf), "echo \"stats.ws45new.test %d %d \" | nc 127.0.0.1 2003", n, result);
num = sprintf(buf, "echo \"stats.ws45new1.test %d %d \" | nc 127.0.0.1 2003", n, result);
system(buf);
printf("\n %s", buf);
sleep(2);
}
return 0;
}
这应该产生像锯齿信号,这是仅用于测试。我的问题是,当我运行程序时,它什么都不做。
如果我按Ctrl-C来停止它,程序会通过while循环迭代一次。它应该向石墨服务器发送一些统计数据,并用它来了解石墨是如何工作的。从我看到它与连接功能sprintf
(snprintf
也采用相同的方式)有关。
如果我注释掉那条线它能正常工作并生成我想要的数字(也是时代),但是我需要连接才能将所需的动态信息发送给石墨。
如果任何人有任何想法,为什么这些连接函数不尊重while函数,请让我知道,因为我真的很好奇。此外,我愿意接受其他建议,但我宁愿不深入研究,比如创建套接字,不使用数控系统和系统,因为我对C语言并不擅长。
@Evert不,它不应该。 –
@Let_Me_Be你说得对,snprintf是具有该参数的函数;) – Evert
使用shell脚本而不是尝试从头开始写东西。 – auselen