如何在c中实现定时器?

2023-12-05

我们想在Linux平台下的C程序中添加一个定时器。

我们正在尝试发送数据包,并且希望了解 1 分钟内发送了多少数据包。我们希望计时器与while正在执行发送数据包的循环。例如:

    while(1)    
    {     
      send packets;    
    }

该循环将继续发送数据包,直到按下 ctrl-z。应使用计时器在 60 秒后停止循环。


你可以这样做:

#include <signal.h>
#include <unistd.h>
#include <stdio.h>

volatile int stop=0;

void sigalrm_handler( int sig )
{
    stop = 1;
}

int main(int argc, char **argv)
{
    struct sigaction sact;
    int num_sent = 0;
    sigemptyset(&sact.sa_mask);
    sact.sa_flags = 0;
    sact.sa_handler = sigalrm_handler;
    sigaction(SIGALRM, &sact, NULL);

    alarm(60);  /* Request SIGALRM in 60 seconds */
    while (!stop) {
        send_a_packet();
        num_sent++;
    }

    printf("sent %d packets\n", num_sent);
    exit(0);
}

如果循环开销过大,您可以通过每次迭代发送 N 个数据包并在每次迭代中将计数增加 N 来分摊开销。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在c中实现定时器? 的相关文章

  • STL 迭代器:前缀增量更快? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的预增量比后增量快 正确吗 如果是 为什么呢 https stackoverflow com questions 2020184 preincrement faster than postinc
  • C# 异步等待澄清?

    我读了here http blog stephencleary com 2012 02 async and await html that 等待检查等待的看看它是否有already完全的 如果 可等待已经完成 那么该方法将继续 运行 同步
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • 执行命令而不将其保留在历史记录中[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在进行软件开发时 经常需要在命令行命令中包含机密信息 典型示例是将项目部署到服务器的凭据设置为环境变量 当我不想将某些命令存储在命令历史记
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 无限循环与无限递归。两者都是未定义的吗?

    无副作用的无限循环是未定义的行为 看here https coliru stacked crooked com view id 24e0a58778f67cd4举个例子参考参数 https en cppreference com w cpp
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 如何使用 JSch 将多行命令输出存储到变量中

    所以 我有一段很好的代码 我很难理解 它允许我向我的服务器发送命令 并获得一行响应 该代码有效 但我想从服务器返回多行 主要类是 JSch jSch new JSch MyUserInfo ui new MyUserInfo String
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern

随机推荐

  • Apache 和 CentOS 中的默认会话超时

    任何人都可以帮我找出 apache 和 CentOS 中的默认会话超时 这来自 php 中php ini而不是 apache 或操作系统 默认值为 1440 以秒为单位 即 24 分钟 但这取决于您的托管提供商 您正在寻找的具体设置是 se
  • Spring Data REST:自定义方法验证

    我正在尝试使用Spring Data REST带有注释的存储库 RepositoryRestResource注释与自定义方法实现一起 有2种情况 1 我有 REST 存储库 注释为 RepositoryRestResource映射到 use
  • 使用字节数据类型时 JAVA 中的精度损失

    byte b 9 b b 6 给出编译错误 可能会损失精度 为什么b 9不给出错误 而b b 9造成精度损失 有人告诉我9 或任何数字 被视为int因此损失精度 但那为什么呢b 9不会给出任何精度损失误差吗 也当写成b 6 代码不会给出任何
  • DDD - 实体不能直接访问存储库的规则

    在领域驱动设计中 似乎有lots of 协议实体不应直接访问存储库 这是来自埃里克 埃文斯吗领域驱动设计书上的 还是从别的地方来的 对于其背后的推理 哪里有一些好的解释 编辑 澄清一下 我不是在谈论将数据访问与业务逻辑分离到单独层的经典 O
  • 如何在改造Android中发送对象数组?

    我有一个要在服务调用中传递的以下对象数组 ParkingSpace sid WorldSensing vhu6lom3sovk6ahpogebfewk5kqadvs4 5385fc250cf2497dfe5679d1 ParkingSpac
  • CakePHP 3.0 没有 intl 扩展就无法运行

    我正在尝试在共享主机上安装并运行 CakePHP 3 0 项目 然而 CakePHP 3 0 需要php intl扩展 但托管提供商拒绝我安装 启用intl共享主机上的扩展 我怎样才能运行 CakePHP 3 0 而不intl扩大 有没有办
  • NetBeans。禁用错误检查下划线

    如何在 NetBeans 6 9 1 中禁用错误 检查 源代码中出现红线是很烦人的 这类似于NetBeans 关闭 红色波浪下划线 如何 但我想完全禁用下划线 而不仅仅是在打字时 它错误地解析 PHP 源并忽略语法错误 Netbeans 有
  • 比较 Python Pandas DataFrame 的匹配行

    我有这个数据框 df1 在熊猫中 df1 pd DataFrame np random rand 10 4 columns list ABCD print df1 A B C D 0 860379 0 726956 0 394529 0 8
  • SSL 错误/RSA 预主密钥错误

    有人知道 PayPal 沙箱中遇到的错误是什么问题吗 上次运行良好几个月 我们更换了服务器 IPN 停止运行 我们不确定是 PayPal 问题还是我们的问题 在 Web 服务器访问日志中 没有显示 PayPal IPN POST 日志条目
  • 将 MultiLabelDataset 转换为 Guava Multimap 以进行打印/检查

    我正在使用以下程序 public static void main String args throws Exception String input args 0 InputStream is new BufferedInputStrea
  • 局部变量需要声明为final

    我收到错误 局部变量框是从内部类内部访问的 需要声明为最终的 这看起来不错 但我真的不认为这是最好的解决方案 所以我希望其他人可以帮助我 这是我的代码 public void showPublisherBox JComboBox box i
  • 提供 cin 输入的默认值

    我的应用程序使用读取用户输入std cin溪流 在一个地方 我想提供默认输入并让用户按原样接受它 通过按 Enter 键 或在继续之前修改它 通过使用退格键删除旧字符并添加新文本 我知道字符可以直接放入cin rdbuf 但这并不是我想要实
  • window.outerWidth VS $(window).outerWidth()

    我只是好奇两者之间有什么区别window outerWidth and window outerWidth 是 如果有的话 我在谷歌上找不到太多关于这方面的信息 所以我想我会吸引大众 这只是一个一般性问题 而不是一个具体问题 Jquery的
  • 选择不包含某些特定类的 :first-child 或 :last-child

    假设我们有一个包含 5 个项目的列表 并且我们想要应用一些具体款式到第一个或最后一个孩子 但是这个列表的功能需要通过 jQuery 应用一个类 我们称之为 hide 这将设置一个display none 关于目标项目 The 具体款式我一开
  • 从使用 dlopen 加载的共享库引用全局符号

    我有一个共享库 我想从主程序访问符号 例如 main c include
  • 如何删除

    标签顶部的空间/将包含的文本与容器顶部对齐?

    这无疑是一个愚蠢的问题 但我今天过得很糟糕 这让我很困惑 如果您查看http jsfiddle net E6kGP 1 然后您可以看到两个相邻的简单 div 每个 div 都包含一个 p 标签 每个标签具有不同的字体大小和匹配的行高 p 容
  • org.apache.hadoop.mapreduce.counters.LimitExceededException:计数器太多:121 max=120

    我正在运行一个 hadoop 作业 来自 oozie 它有很少的计数器和多输出 我收到如下错误 org apache hadoop mapreduce counters LimitExceededException 计数器太多 121 ma
  • 网络服务器的实现[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我想用纯 Java 实现我自己的网络服务器 Web 服务器应该仅支持静态资源 即 html js css 图片 电影等 您能推荐一个关于如何实现这样
  • 无法在字段值中使用 1(int 类型)作为 *int 类型

    为什么会产生错误 一样的int除了 with 指针 type Gim struct Active int yesVar Gim Active 1 error Cannot use 1 type int as type int in fiel
  • 如何在c中实现定时器?

    我们想在Linux平台下的C程序中添加一个定时器 我们正在尝试发送数据包 并且希望了解 1 分钟内发送了多少数据包 我们希望计时器与while正在执行发送数据包的循环 例如 while 1 send packets 该循环将继续发送数据包