小编Bra*_*tes的帖子

在c静态库中使用定时器/信号是不好的做法?

我正在构建两个静态c库.每个库都有一个例程,在调用mylib_init()之后需要每秒运行一次;

我使用setitimer在每个库中实现了这个,它使用ITIMER_REAL资源和SIGALRM信号.

void Start1msTimer()
{
    struct itimerval new;
    memset(&new,0, sizeof(new));

    new.it_interval.tv_sec=1;
    new.it_value.tv_sec=1;

    signal (SIGALRM, OneSecTimeout);
    setitimer (ITIMER_REAL, &new,NULL);
}
Run Code Online (Sandbox Code Playgroud)

好到目前为止一切都很好.

现在我正在构建一个使用这两个库的示例应用程序,并且正在产生冲突.我已经意识到一个应用程序每个信号只能有一个处理程序,而ITIMER_REAL只能用于一个计时器,而不能同时用于两个计时器.显然事情现在不起作用.

对我来说,在每个库中实现时序的更好方法是什么?

一般来说,在库中有任何信号处理程序是一个坏主意吗?

c linux signals timer

2
推荐指数
1
解决办法
281
查看次数

在c中的变量和未定义的操作中移位的位数是多少?

具体来说,我这样做

Word32 x = 18653184;
Word32 y;
Word16 shift = 269;
y = x >> shift;
Run Code Online (Sandbox Code Playgroud)

我希望这个逻辑移位的结果为0,但我得到2277.C如何定义这种类型的操作?

c

1
推荐指数
1
解决办法
62
查看次数

是否可以访问未在标题中公开的静态库中的函数?

我知道如果找不到该函数的原型,将生成编译器错误.但是让我说我​​知道一个库包含一些非公共函数,我为它创建了自己的原型(匹配静态库中的一个),链接器是否可以将其拉入?

我问的原因是我正在创建一个库,我正在使用常用的通用名称作为函数,比如"init()",它们仅供内部使用.我想知道他们是否会在链接期间与库外的符号发生冲突

c

0
推荐指数
1
解决办法
186
查看次数

如何将字符串中的原始ascii值转换为整数?

我有一个128位的值,我在python中存储为一个字符串.我想检索它的最后4个字节,递增它,然后将其重新放回128位值.例:

mybigvalue = "69dda8455c7dd4254bf353b773304eec".decode('hex')
lastInt = mybigvalue [12:]
lastInt =lastInt +1
mybigvalue [12:] = lastInt
Run Code Online (Sandbox Code Playgroud)

但这不起作用.我是一个蟒蛇菜鸟,不知道下一步该尝试什么,或者我这样做的全部想法都是错误的.我来自C背景,并不完全了解python如何处理数据.

python

0
推荐指数
1
解决办法
229
查看次数

标签 统计

c ×3

linux ×1

python ×1

signals ×1

timer ×1