Articles of c + +

为什么描述snmp oid给“null”?

我下面的代码不工作,因为我想获得使用Net-Snmp库的节点的描述。 #include "net-snmp/net-snmp-config.h" #include "net-snmp/net-snmp-includes.h" void print_s(struct tree *); int main(int argc, char ** argv) { char buff[100]; struct tree *node=NULL; init_mib(); node=read_all_mibs(); if( node == NULL ) { exit(2); } print_s(node); } void print_s(struct tree *tree) { struct tree *tp; for (tp = tree->child_list; tp; tp = tp->next_peer) { printf("%s:%s\n",tp->label,tp->description); } for (tp = […]

从内核读取使用procfs的时间戳 – 从内核读取后存储在哪里?

当中断发生在内核和如果我正在读取内核中的时间戳。 我正在通过procfs从内核读取用户的时间戳。 中断时间值将被存储在哪里? 用户应该如何从用户空间读取该值? ssize_t dev_read(struct file *filp,const char *buf,size_t count,loff_t *offset) { if ( count < sizeof(InterruptTime) ) { // Not enough space provided. return 0; // Or some error code maybe. } if (copy_to_user(buf,&InterruptTime,sizeof(InterruptTime)) { return -EFAULT; } else { return sizeof(InterruptTime); // Number of bytes we copied. } } 这是我在/linuxversion/net/core/dev.c中修改的代码 int netif_rx(struct […]

处理器智能卡读卡器

我正在写应用程序连接到智能卡阅读器,而我想连接2应用程序到2阅读器: # Detected readers (pcsc) Nr. Card Features Name 0 Yes ACS ACR38U 00 00 1 Yes ACS ACR38U-CCID 01 00 但是,应用程序只连接到阅读器0:ACS ACR38U 00 00.我尝试使用IFDHandler,但它不正确。 请帮助我连接2个应用程序2读者0和1.谢谢。

等待所有线程定时器callback完成的安全方法

在一次性定时器的情况下,我可以使用信号量等待定时器callback完成。 但是,如果定时器被多次发射,这并没有帮助。 考虑下面的代码: #include <stdlib.h> #include <stdint.h> #include <stdio.h> #include <signal.h> #include <time.h> #include <unistd.h> #include <pthread.h> #define N 10 void timer_threaded_function(sigval_t si) { uint8_t *shared_resource = si.sival_ptr; sleep(rand() % 7); /* … manipulate with shared_resource */ return; } int main() { struct sigevent sig_ev = {0}; uint8_t *shared_resource = malloc(123); timer_t timer_id; int i; […]

用C写串口读写

我正在写一个C程序,将读取和写入一个串行端口。 每次写入之后都将进行一次读取,其中将包含基于写入的数据。 我将有大约16个不同的写入来执行,每个写入之后都是读取。 我还是新来的串行编程,并试图确定如何处理这个。 程序是否应该在每次写入/读取期间阻塞(基本上有很长的一(1)次写入和读取循环)? 有可能有一个线程发送写入,而另一个线程执行读取? 是否可以创build一个callback函数让线程知道数据何时可以从串口读取? 谢谢您的帮助。 编辑: 操作系统:Linux

为什么中断处理程序有睡眠function?

为什么中断处理程序不能进入睡眠状态? 我有同样的问题2意见: – 中断处理程序是不可调度的? 因为它没有task_struct。 如果处理器处于睡眠状态,则系统可能会挂起,因为系统时钟中断被屏蔽,无法调度睡眠进程。 没有得到的是,中断处理程序是可调度的,但是由于优先级较低的系统时钟中断因为较高优先级中断而被屏蔽而不能再次产生。 请给我一个很好的例子。

stdio.o在linux机器上居住在哪里?

我正在尝试手动执行我的程序的所有编译步骤。 在我使用链接器命令ld的最后一个步骤中,我需要指定库的对象文件(stdio,因为我已经在我的代码中使用了printf),那么只有make和.exe文件。 这个目标文件驻留在哪里?

C代码来获取Linux中IP地址的接口名称

我如何从C代码获取Linux中IP地址的接口名称? 例如,我想获取分配给IP地址192.168.0.1的接口名称(如etho,eth1,l0)

如何使用settimeofday(2)?

我在这里做错了什么? 我期望settimeofday()来更改系统时间,而不是返回EINVAL 。 $ uname -a Linux io 4.3.5-300.fc23.x86_64 #1 SMP Mon Feb 1 03:18:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux $ cat settimeofday.c #include <sys/time.h> #include <stdio.h> int main() { struct timeval tv = {0, 0}; if (settimeofday(&tv, 0) == -1) perror("settimeofday"); } $ gcc settimeofday.c $ sudo ./a.out settimeofday: Invalid argument 错误来自运行Fedora 23的Thinkpad […]

如何在C和Linux中打印黑桃,红心,钻石等?

所以我开始放置一个char char符号数组[52] = {'\ x03','\ x04'等。 等等),第一次我做到了,它实际上打印了心脏,黑桃等等,但是在把我的系统语言环境改为韩语语言之后,它开始给我一些奇怪的符号,与它无关。 我也试图在另一台电脑上做,并且正确地编译了这些符号。 然后,我试着把它移动到Linux上,它打印奇怪的正方形,其中有0 0 0 3。 有谁知道为什么这些出现或有更好的方式来打印这些符号? PS:我在Windows中使用Visual Studio,然后在Linux中使用.c代码