小编Jey*_*ram的帖子

Linux 下 C 语言中 getchar 和 clrscr() 的替代

这几天我在Ubuntu上工作。当我使用 gcc 编译 C 程序时,出现错误conio.h不存在。我想使用clrscr()getch()发挥作用。你能告诉我这个头文件在linux中的替代品吗?

c linux

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

cygpath无法将Windows路径转换为Linux路径

我试图在Windows机器上将文件路径转换为Linux和Windows.

unix路径到windows工作正常.

$ cygpath -w /cygdrive/c/CYGWIN/CYGBuild/build.mak
C:\CYGWIN\CYGBuild\build.mak
Run Code Online (Sandbox Code Playgroud)

但Windows的Linux路径输出错误.即缺少'/'和cygdrive

$ cygpath -u c:\cygwin\cygbuild\build.mak
c:cygwincygbuildbuild.mak
Run Code Online (Sandbox Code Playgroud)

有谁遇到过这个问题?分享您的经验.

谢谢

cygwin cygpath

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

1GB页面和透明大页面(Linux)

Transparent Huge Pages(THP)最近Linux内核中的支持允许在不同页面大小之间自动升级/降级(例如,x86-64中的4KB和2MB).但我不确定THP是否也可以促进/降低页面大小4KB1GB页面之间2MB1GB页面之间的页面大小.

有人可以对此发表评论吗?

linux linux-kernel tlb

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

Linux time命令的结果

我从linux time命令获得了结果。

real    119m10.626s
user    133m0.952s
 sys    20m32.155s
Run Code Online (Sandbox Code Playgroud)

从我搜索的信息来看,似乎user + sys不应该是真实的,但实际情况并非如此。有人知道为什么吗?

linux time

5
推荐指数
0
解决办法
140
查看次数

堆管理

我知道有一个元数据存储辅助信息free(),realloc()当我们只提供指针时使用辅助信息.

我对堆很少有疑问.

  • 堆栈按进程分配.毫无疑问,但不确定堆.无论堆信息是否全局维护,否则每个进程都会有一些机制来保存有关该特定进程的已分配内存的信息.

  • 堆信息将如何维护?我猜哈希机制.我用Google搜索并尝试了SO.他们中的大多数人都将其解释为具体实施......就像那样.

linux heap operating-system

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

分析C应用程序中的最大内存使用情况 - linux

我正在为linux下的php开发C模块,我正试图找到一种方法可以帮助我通过最大内存峰值(使用率)来描述我的代码.

使用valgrind我可以在代码中获得总内存分配.但就像分配的内存一样,它来来往往;).我需要得到的是在C应用程序运行期间出现的最高内存使用量,因此我可以全面了解内存需求,并为优化代码提供一些测量点.

有谁知道任何有用的工具/技巧/良好做法?

c linux memory profiling memory-profiling

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

在函数的返回类型中定义结构

#include <stdio.h>
#include <string.h>

struct s
{
    int data;
} fun()
{
    static struct s ss; 
    ss.data = 20;
    return ss;
}

int main()
{
    struct s ss;
    memcpy(&ss, &(fun()), sizeof(struct s));

    printf("\n Data: :%d", ss.data);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在上面的程序中,我试图定义一个提到返回类型的结构.struct s已成功定义.

这是有效用法吗?我从未见过像这样的真实场景.

如何让这个程序工作?

我收到此编译器错误:

asd.c: In function ‘main’:
asd.c:21:15: error: lvalue required as unary ‘&’ operand
Run Code Online (Sandbox Code Playgroud)

c struct

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

C 结构的 64 位对齐/填充?

struct tag_t_ {
    u_int8_t op;
    u_int8_t num;
    u_int32_t labels[5];
};
Run Code Online (Sandbox Code Playgroud)

在上面的结构中,64位编译器将在哪里添加填充字节?
它是在第一个标签之前还是在第一个标签的末尾?
如果填充位于第一个标签的末尾,那么在访问(读取)32 位拱形中的第一个标签时是否会导致任何错误结果?

c 64-bit padding

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

仅从ELF二进制文件中提取我的函数名称

我正在编写一个脚本,用于提取二进制文件中的所有函数(由用户编写).

以下shell脚本提取我的函数名称以及以__开头的一些库函数

readelf -s ./a.out | gawk '
{ 
  if($4 == "FUNC" && $3 != "0" && $7 == "13" && $8 != "main") { 
    print "b " $NF; //***Updated
  } 
}' &> function_names; 
Run Code Online (Sandbox Code Playgroud)

function_names文件的输出:

b __libc_csu_fini
b PrintDivider    
b PrintFooter    
b __libc_csu_init    
b PrintHeader
Run Code Online (Sandbox Code Playgroud)

我想只提取我的功能.那么如何检查函数名称是否以__开头,否则任何其他替代品也会高度评价.

更新::
@djf解决方案工作正常.如果.c编译的文件也可能包含以__?开头的函数怎么办?在那种情况下,如何区分?

c linux shell awk readelf

4
推荐指数
2
解决办法
4660
查看次数

未定义的异常处理程序(__und_svc)在kprobes中的作用是什么?

我试图将kprobe转换为可加载的内核模块.

我能够samples/kprobes/从内核树中运行文件夹中的可用示例.

如果我们在kernel(CONFIG_KPROBES)中配置kprobes ,那么svc_entry宏将在__und_svc()处理程序中扩展为64字节.

参考: http ://lxr.free-electrons.com/source/arch/arm/kernel/entry-armv.S?a = arm#L245

我的目标是没有触及内核端,使kprobe成为内核模块.

因此编译内核时不启用CONFIG_KPROBES.所以svc_entry宏将在__und_svc()中以0扩展

我想从这些疑虑中解脱出来.

  1. 如果处理kprobe未定义的指令异常(仅创建bcos kprobe),则__und_svc()调用原因.__und_svc()处理程序对kprobes 的作用是什么?

  2. 如果64字节内存是强制的,那么如何在不编译内核的情况下进行分配.即如何动态地做到这一点.

请分享您的知识.

arm linux-kernel systemtap armv7 kprobe

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