标签: c

可以向文件写入少于1个字节

据我所知,C中最小的单位是a byte.这种约束来自哪里?中央处理器?

例如,如何将一个nibble或一个单独写入bit文件?

c bits file low-level

13
推荐指数
2
解决办法
5332
查看次数

Windows中的头文件alloca.h

我看不到任何alloca.h等价物Visual C 2010.如何Visual C在Windows上执行堆栈分配?我想念这个功能alloca.

c windows gcc visual-studio-2010

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

C:Exec/fork> Defunct进程

我想使用fork> exec过程创建许多子进程.许多过程都以非常快的速度结束(不到两分钟,有些甚至更早).

我的第一个问题是,我将生成的进程放入后台

./spawnbot > logging.txt
[CTRL+Z]
bg 1
disown
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.现在我不再看到任何spawnbot的消息,他们直接进入logging.txt.然而,每当创建一个新的孩子时,我再次在我的控制台中看到关于那个孩子的所有信息..我现在想要用它自己的管道启动每个孩子 - 是否有更好的方法让孩子们在他们的输出消息全部发布安慰?我应该将它重定向到/ dev/null还是用C中的一些标志完成?

其次,所有的孩子都没有真正被杀.我的ps -ef中有很多进程.我该怎么办?我该怎么做

c fork exec defunct

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

C免费和结构

我的问题是关于C free()函数,用于释放先前使用malloc()分配的内存块.
如果我有一个结构数据类型由几个指针组成,每个指针指向不同的内存位置,如果我在结构上应用free()会对这些内存位置会发生什么?这些地点也会免费吗?或只是分配指针的内存块?

c free pointers data-structures

13
推荐指数
2
解决办法
2万
查看次数

与守护进程进行进程间通信

我想实现一个Unix守护进程(让我们称之为myUnixd),并希望用户能够通过命令行与该守护进程交互,例如:

myUnixd --help # will display help information
myUnixd --show # will show some data (the's deamon should be doing the work)
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:我如何与守护进程通信?我在想Unix域套接字.有人能告诉我正确的方法吗?

谢谢.

c unix command-line daemon inter-process-communicat

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

如何在没有GDB Python API的情况下在C或Python代码中控制gdb?

我试图用python或c编写一个程序,可以使用gdb调试c代码.

我已经阅读了TomInvoke解决方案并从Python控制GDB.但它们或多或少是在python中编写脚本gdb的解决方案.由于我将使用arm-gdb来调试嵌入式程序,我无法在我的gdb中启用python脚本.

我的目标是创建一个gdb的高级抽象.例如,启动gdb,设置一些断点并在我的代码中继续.我还阅读了一些材料gdb/mi界面.但有谁能告诉我如何使用gdb/mi接口创建一个gdb进程并从c/python代码与gdb进行通信?(幸运的是我的arm-gdb支持gdb/mi接口).

c python gdb arm

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

将部分注入GNU ld脚本; binutils版本之间的脚本兼容性.

我正在构建类似于如何将来自不同.a文件的数据收集到一个数组中的问题?如何使用ld脚本保留.a文件中的节?,即在链接时组成的数组,来自不同目标文件的元素.

在我的例子中,有几个数组,每个数组都进入它自己的部分,.ld_comp_array_*,其中*匹配数组的名称.然后我使用ld --verbose获取默认链接描述文件,并通过将所有这些部分(排序,以便不同数组的元素不混合)修改为输出部分来修改它:

KEEP (*(SORT_BY_NAME(.ld_comp_array*)))
Run Code Online (Sandbox Code Playgroud)

一切正常.

事情变得有点复杂,因为使用这个功能的应用程序可以为各种平台构建 - 到目前为止,我已成功尝试AVR Xmega作为目标平台,以及Windows 32位和Linux 32-和64位用于单元测试,列表是开放的(新平台很可能在不久的将来添加).

但是,对于每个特定平台,默认链接器脚本与其他平台上的不同,目前我手动插入.ld_comp_array*部分 - 是否可以以某种方式自动执行?我想到的唯一解决方案是解析默认脚本并粘贴上面的输入节描述,但这看起来太沉重了.

如果没有相对简单的解决方案,我可以手动完成它,但我不确定从本地版本的ld获得的默认脚本是否可能在不同版本的binutils上中断.任何人都可以澄清这是否安全?

如果它可以自动完成,是否可以将输入节规范"直接"注入到.text部分,假设数组应该是"不可变的"?

c linker ld binutils

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

如何使用远程桌面运行cuda代码?

我正在使用远程桌面连接连接到具有Nvidia卡(兼容CUDA)的桌面.

我这样做是因为我目前没有显示器!因此,我暂时使用笔记本电脑连接到我的桌面并运行我的CUDA代码.

它接缝远程桌面无法识别Nvidia卡. cudaGetDeviceCount()正在回归一个非常大的数字.我的电脑上只有1个Nvidia 460.

我该如何解决这个问题?我应该使用其他远程软件吗?

c c++ cuda

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

GCC如何决定输出汇编函数的顺序?

通过程序集GCC为我的项目中的C文件生成,我注意到函数不会按照它们在源文件中出现的顺序在汇编中输出.这次重新排序的目标是什么?GCC使用什么启发法来决定订单?(它只是保存函数的数据结构的工件吗?)这不是-freorder-functions,因为我没有使用-fprofile-arcs.

c gcc

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

200-300位整数的最快整数排序实现?

对于200-300位大小的整数,最快的整数排序实现是什么?精确的int大小是固定的; 我有这样的整数高达2千兆字节(全部在RAM中).

我听说可以在O(n log log M)或甚至O(n sqrt(log log M))时间平均排序这样的集合,其中n是整数,M是最大整数.内存使用量有限(我可能会额外使用0.5-1 GB).排序可以就地进行; in可能不稳定(重新排序重复).

是否有这种排序方法的C/C++实现,例如Han&Thorup(2002)?

c c++ sorting integer

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