如何在自己的程序中替换linux标准库函数

如何在自己的程序中替换linux标准库函数,第1张

#include <stdio.h>

#include <string.h>

#include <malloc.h>

// 将strRes中的t替换为s,替换成功返回1,否则返回0。

int StrReplace(char strRes[],char from[], char to[]) {

int i,flag = 0

char *p,*q,*ts

for(i = 0strRes[i]++i) {

if(strRes[i] == from[0]) {

p = strRes + i

q = from

while(*q &&(*p++ == *q++))

if(*q == '\0') {

ts = (char *)malloc(strlen(strRes) + 1)

strcpy(ts,p)

strRes[i] = '\0'

strcat(strRes,to)

strcat(strRes,ts)

free(ts)

flag = 1

}

}

}

return flag

}

int main() {

char str[80] = "098123asd098opu"

printf("替换前:%s\n",str)

if(StrReplace(str,"098","33210")) printf("替换后:%s\n",str)

else printf("没有任何替换。\n")

return 0

}

若要在 kernel 里面新增加一个自己的 sys call,大致需要这么几个步骤:

a,新增自己 sys call 的代码,并修改相应 makefile;

b,修改相应头文件,分配自己的系统调用号;

c,系统调用通过中断加查表的方式实现,所以需要在系统调用表里面增加相关的项目,这需要修改相关的汇编源文件;

d,重新编译内核,并写测试程序测试新增的sys call;

注意几点:

1,上述步骤所要修改的文件/位置等对不同处理器架构来说,不尽相同;

2,对于应用层的测试代码来说,在 2.6.20 版本之前,可以使用相应的 _syscallN 宏;

但是2.6.20 版本后,这些宏已经被从 kernel 中去掉了,你需要使用应用层的 syscall 函数

来测试。

你可以在自己的sys call实现文件中加上 EXPORT_SYMBOL / EXPORT_SYMBOL_GPL

等宏来导出你的全局变量或者函数,导出后,另外的模块或者其他内核代码就可以使用

这些变量和函数。

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

杭州巨立安(JulianTec)是杭州市场上

唯一由资深研发工程师所创办的机构。所以:

就专业程度和实在程度而言,杭州巨立安(JulianTec)

是您在arm架构下学习嵌入式Linux研发的上佳指导!

sed   "s/^someVariable=.\{0,\}/someVariable=$1/g"  /file_path/file.suffix

sed   "s/^someVariable=.*/someVariable=$1/g"  /file_path/file.suffix

sed里面调用变量要用双引号


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8900953.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-22
下一篇2023-04-22

发表评论

登录后才能评论

评论列表(0条)

    保存