Articles of c + +

处理器智能卡读卡器

我正在写应用程序连接到智能卡阅读器,而我想连接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代码

链接错误“未定义的参考”在编译期间关于boost静态库

我想用boost库1.57来编译Linux x64上的C ++项目。 这个项目是用scons编译的,我在Arch Linux上成功编译了,但是这次在Ubuntu机器上失败了。 我添加了-lboost_coroutine标志进行链接,但错误“未定义的引用”仍然存在。 /usr/bin/g++ -o build/gcc.release/app -pthread -g build/gcc.release/src/han/unity/rpcx.o -lpthread -lz -lboost_coroutine -lboost_context -lboost_date_time build/gcc.release/src/han/unity/rpcx.o: In function `attributes': /usr/local/include/boost/coroutine/attributes.hpp:31: undefined reference to `boost::coroutines::stack_traits::default_size()' 我注意到属性.hpp恰好是boost协程头文件之一。 我试图用nm来提升协程库,似乎没有问题。 nm /usr/local/lib/libboost_coroutine.a | grep "default_size" 0000000000000170 T _ZN5boost10coroutines12stack_traits12default_sizeEv 我search了这个错误的可能原因,大部分是关于链接器标志的顺序。 在这种情况下,rpcx.o取决于boost_coroutine,所以这出现在前面。 还有什么可能的原因?

–Wunusedvariables编译器说错误

最近我开始用C + +编程(我来自Java,这花了我一点点改变哈哈)。 在Windows下一切正确。 问题是,我切换到Linux,这是我有问题的编译器。 通常当你声明一个variables而没有使用时,编译器会显示一个“警告”,表示这个variables没有被使用,但是我(在linuxmint 15下)把我当作“错误”抛出,并且没有编译:C不知道有没有人发生过这样的事情,但是在制作大型节目时(不止一节课)我生病了。 一个小例子: