首页 文章
  • 4 votes
     answers
     views

    使用Virtualbox在主机和来宾之间 Build 串行端口连接

    我'm trying to learn how to write C code that will read from the serial port in Linux. I'已经发现了什么似乎是一个很好的教程here . 我希望能够测试这段代码,所以我想我需要一个串口,或者在上面的代码读取时写入串口的方法 . 我正在使用virtualbox在我的Mac上运行Ubuntu 10.04作为虚拟机 ....
  • 10 votes
     answers
     views

    使用I / O套件访问串行至USB设备

    我有以下问题:我有一个Wintec WBT-202 GPS设备,它能够通过USB传输位置数据作为NMEA数据 . 在这个USB内部它只是一个USB到串行桥,它使用标准 usbser.sys 驱动程序在Windows下运行 . 我的问题是让它在Mac OS X下运行 . The hardware USB GPS鼠标使用Atmel AT91SAM7S256芯片,该芯片也负责USB接口 . 在Mac ...
  • 48 votes
     answers
     views

    为什么写入内存比读取内存慢得多?

    这是一个简单的 memset 带宽基准: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> int main() { unsigned long n, r, i; unsigned char *p; clock_t c0,...
  • 1 votes
     answers
     views

    如何正确创建链表

    // creating a struct to store number of cd's, titles, and count struct CD_type_node { int cd_number; char title[20]; int count; struct CD_type_node* next; }; struct CD_type_node* myli...
  • 4 votes
     answers
     views

    从C中读取FIFO:select()不返回?

    我有一个C程序,我正在写 . 这是它的作用: 使用mkfifo创建n fifos 打开它们进行读取(设置了O_NONBLOCK标志) 打开它们进行写入 产生一个线程 在线程中,循环运行: 为所有n个FIFO创建文件描述符的fd_set 调用select(n,&my_set,NULL,NULL,NULL) 对于每个为I / O准备的fd(FD_ISSET(fd,&my...
  • 3 votes
     answers
     views

    UDP多个套接字有效地接收数据和进程 - C&Linux

    我必须从15个不同的客户端接收数据,每个客户端在5个不同的端口上发送 . 完全15 * 5插座 . 对于每个客户端端口,没有定义和修复 . 示例客户端1,端口3001至3005,客户端2,端口3051至3055等 . 它们有一个共同点,即第一个端口(3001,3051)用于发送命令 . 其他端口发送一些数据 . 收到数据后,我必须检查校验和 . 跟踪recvd数据包,如果丢失则重新请求数据包,还必...
  • 2 votes
     answers
     views

    通过eventfd在线程之间传输数据

    我想通过eventfd在线程之间传输数据 . 所以我写下面的代码来满足我的需要 . 我的主机操作系统是openSUSE v12.3 64bit . #include "stdio.h" #include "unistd.h" #include "pthread.h" #include "sys/eventfd.h&quot...
  • 7 votes
     answers
     views

    为什么read()的调用会永远阻塞

    我正面临一个最近才开始的令人费解的问题 . 我有一个程序,它使用一个线程写入文件,另一个线程从该文件中读取 . 两个线程都使用不同的文件描述符 . 写入程序线程使用O_WRONLY标志打开文件,读取器线程以O_RDONLY模式打开文件 . 就逻辑而言,读者线程不知道编写器线程正在做什么,并且两者都可以使用不同的文件 . 写入程序线程以固定间隔连续写入文件(数据来自设备流,速度高达20Mbit / ...
  • 1 votes
     answers
     views

    子进程调用的重定向输出是否丢失?

    我有一些大致相似的Python代码,使用了一些你可能拥有或不拥有的库: # Open it for writing vcf_file = open(local_filename, "w") # Download the region to the file. subprocess.check_call(["bcftools", "view&quo...
  • 6 votes
     answers
     views

    主/工作线程和信号处理

    我正在编写一个程序,有一个主线程和一些工作线程,我想让信号处理正确 . 我的问题如下: 主线程启动并执行所有分配 主线程设置SIGINT信号处理程序 主线程启动工作线程 . 工作线程不需要特殊清理,但是它们可以在系统调用或信号量上休眠 . 收到SIGINT时,我的理解是只有一个线程接收它 . 因此,如果线程在系统调用或信号量上休眠,它们就不会被唤醒,我将无法pthread_join我的工作线程并在...
  • 1 votes
     answers
     views

    等待几个线程中的一个完成?

    我正在实现一个线程池 . 每个线程所需的工作是1-10秒的CPU,所以我很高兴有一个传统的工作线程池,或者我很乐意为每个工作单元生成一个新的线程 . 没关系 . 我想有一些方法让主控制线程知道N个工作线程中的一个何时完成其工作并准备好更多(或者是时候启动另一个) . 我看过pthread_join和pthread_cond_wait . 似乎没有办法等待N中的一个 . 所以我想主线程有一个变量,它...
  • 0 votes
     answers
     views

    在没有互斥锁的情况下立即唤醒所有线程

    我的程序根据行的字段之一处理不同线程中的数据库行 . 主线程产生“ Worker ”,执行查询,然后,对于每一行,需要唤醒所有工作人员以使其中一人消耗该行 . 现在,使用pthread_cond_broadcast()似乎是最合乎逻辑的选择 . 但是,在这种情况下,工作者必须使用相同的互斥锁在pthread_cond_wait()内等待 . 在我的情况下,这是次优的,因为这意味着, Worker ...
  • 2 votes
     answers
     views

    pthread_cond_wait有时不会收到信号

    pthread_cond_wait 和 pthread_cond_signal 我有一个奇怪的问题 . 我已经安排了一系列线程 . 它们在启动时都处于睡眠状态 . 唤醒功能将发出这些线程的信号,做一些工作,并等待结果 . 在下面的设置中, td 是包含互斥锁和条件的线程数据, th 是包含指向线程的指针的数组: for (size_t i = 0; i < NUM_THREADS; i++)...
  • -4 votes
     answers
     views

    动态alloacated内存的大小[重复]

    这个问题在这里已有答案: Determine size of dynamically allocated memory in C 13个答案 ================================================== ===================================== 您好 如果我们给出一个动态分配的指针, 我们如何确定分配内存的大小? 对于E...
  • 3 votes
     answers
     views

    使用`bdrv_pread(..)`或替代方法读取qcow2图像的内容

    我想在QEMU中使用 bdrv_pread(...) 函数读取 .qcow2 图像中的内容 . 比方说,我的图像的完整路径是 /path/to/myimage.qcow2 ,我希望能够在特定偏移处读取此图像的'n'字节数据 . 现在 bdrv_pread 函数接受这些参数' BlockDriverState *bs, int64_t offset, void *buf, int count1 ',...
  • 7 votes
     answers
     views

    加载内核时QEMU崩溃

    我已经创建了一个C内核,我正在QEMU模拟器中加载内核 . 但是当我加载内核时,它似乎崩溃QEMU并且它抱怨它无法访问kvm文件夹 . 这是否意味着缺少kvm,或者我不是管理员;因为我以root管理员身份登录以下是源自终端的错误信息: danny@ubuntu:~/Desktop$ sudo qemu -kernel os.bin open /dev/kvm: No such file or di...
  • 7 votes
     answers
     views

    “(gdb)运行”在qemu模拟arm架构上运行可执行文件时崩溃

    这是我的第一条消息,我正在给你写信,因为这次我真的无法解决这个问题 . 我正在学习关于gdb的课程 . 在后面的课程中,课程涵盖了ARM体系结构的调试,因此我提供了一个允许我模拟这种情况的设置 . 我目前的设置是由: Windows 10:物理主机 Ubuntu 12.04.5 LTS:来自Windows 10上的Oracle Virtual Box的访客操作系统 Linux debi...
  • 0 votes
     answers
     views

    串口列表

    我正在编写小型C项目来列出可用的串口(实际上是在Linux上) . 它应列出可用的ttyS,ttyUSB,pty等 . 我的问题是我不知道这样做的正确方法是什么 . 例如,在我的/ dev目录中,我有从ttyS0到ttyS31的设备,但实际上没有人可用 . 我尝试在/ sys / class / tty / ttyS *中查找驱动程序,但所有设备似乎都是真实的 . 实际上我只能列出由'socat ...
  • 2 votes
     answers
     views

    使用libvirt API在C程序中获取KVM VM域名

    我想知道KVM VM的域名 . 有一个简单的方法吗?我有机器的VM ID,可以获得指向virDomainInfo结构的指针 . 我知道我可以用命令 virsh domname <id> 来做,但我似乎无法找到libvirt API,所以我可以通过编程方式进行 . 经过一番挖掘后,我找到了virDomain的结构信息 . 从那里 grab 它会是一个选择吗? struct _virDom...
  • 1 votes
     answers
     views

    如何在最小的Linux内核环境中启动进程?

    是否可以在裸Linux内核之上运行通用C程序? 我正在使用一个带有Qemu的虚拟化linux最小系统,我加载了我的自定义内核和一个根文件系统,但我显然无法运行我的用户空间hello world程序 . 编辑1:我已经更新了更详细的问题 . 以下是我遵循的步骤: 1]我在主机上使用以下命令编译了hello_world程序: gcc hello_world.c -o hello_world 源代码如...
  • 1 votes
     answers
     views

    内存分配释放

    我正在编写链接列表,并在删除节点时尝试释放内存分配 . 但是,经过几个小时的尝试,我似乎无法获得干净的valgrind输出 . void * pop(struct List *list) { if(list->head == 0){ return 0; } struct Node * tempNode = list->head->next...
  • 0 votes
     answers
     views

    如何分配内存?

    我试图在我的程序中创建一个链表,我无法使用malloc()为结构指针分配内存 . 如何在GCC中为变量分配内存?示例程序如下 . 如何让它在gcc中运行? #include<stdio.h> #include <alloc.h> struct node { int data; struct node * link; }; void insert (str...
  • 0 votes
     answers
     views

    将内存分配给struct-nodes

    我很好奇关于用c语言创建结构节点的一个问题 它是关于struct-objects的分配内存 . 我做了以下简单的代码,打印字母"h"和"e",我为第一个结构和第二个结构对象分配了内存 . 试验我删除(发表评论)otf第一个malloc即( ptrList = malloc(sizeof(list)); ) 实际上 - 没有崩溃 - 它仍然有效,这是我的问题 ...
  • 0 votes
     answers
     views

    更改链接列表中struct的int值

    我有一个结构: struct person{ char* name; char* surname; int age; }; 我在另一个结构中使用此结构作为链表: struct listNode { struct person data; struct listNode *nextPtr; }; typedef struct listNode L...
  • 1 votes
     answers
     views

    C中的共享内存与LinkedList

    我必须在C中开发一个迷你shell . 在这个项目中,我们必须处理局部变量和环境变量 . 所以我们可以有两个共享环境变量的进程,在父进程中可以看到一个变量创建,反之亦然 . 我的老师说: The environment variables are stored in a shared memory area that is created by the first copy of your she...
  • 0 votes
     answers
     views

    结构中数组的动态内存分配,

    我不明白如何为另一个结构中的结构数组动态分配内存 . 因为,这是我的问题...我有一个包含main的project.c文件,我有另一个polynomial.c文件,它处理所有的poly操作,比如添加术语,将多项式乘以数字等 . 这是polynomials.h的头文件 typedef struct term{ int coeff; int expo; } TERM; typedef...
  • 1 votes
     answers
     views

    用C语言将char数组转换为int 2d数组

    我有一个由索引和值组成的无限数量的“情侣”的字符数组,由分号分隔 . 每个索引都用逗号分隔 . 例: char srt[50] = "1,3; 2,4; 0,-2; 3,11"; (“index1,value1; index2,value2; ...”) 我想将char数组转换为2d int数组,如下所示: int num[4][2] = {{1,3}, {2,4}, {0,...
  • 0 votes
     answers
     views

    在C中使用Free()时的运行时错误

    我正在尝试在C中使用结构的链接列表,其中一个结构表示列表,另一个结构表示列表的成员 . 这是他们的定义: typedef struct symEntry symEntry; struct symEntry{ const char * key; const void * value; struct symEntry * next; struct symEntry *...
  • 1 votes
     answers
     views

    释放分配的内存

    gcc 4.4.5 c89 我有一个名为create_object的函数,我为全局结构分配内存 . 我有一个名为destroy_object的函数,我检查指针是否为空,然后我自由 . 只是因为我释放了尚未分配的内存 . 但是,我通过连续两次调用destroy_object来测试它 . 但是,我在第二次调用时获得了堆栈转储 . 但是,我确信它不会释放,因为我已将指针指定为NULL . 所以应该跳过免...
  • 0 votes
     answers
     views

    如何在C中合并两段内存?

    我应该使用链表实现硬编码malloc和free,其中链表包含免费的节点 . 1.如果正在释放某些东西,我必须用内存检查左右位置,如果它们是空闲的,则将它们合并在一起 . 但是,在以下调用之后,我遇到以下问题 . 注意我们malloc超过x字节b / c它是x sizeof(struct Node) Original Linked List: [2048] Call: ...

热门问题