如何在自己的程序中替换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

}

可以这样做:

方法1:sed -i 's/被替换的内容/要替换成的内容/' file

方法2:sed 's/被替换的内容/要替换成的内容/g' file >file.out;mv file.out file。

扩展资料:

Shell编程的常用技巧:

一、自动补齐:在linux中对于命令或路径,可以TAB键进行自动补全,以下事项需要注意:

1、只存在一个该输入字符开头的命令或路径,此时自动补全;

2、存在多个该输入字符开头的命令或路径,此时第一次点击TAB键无效,此时再次点击TAB会罗列出所有该字符开头的命令或路径,继续输入直到仅仅剩一个时自动补全;

3、如果命令已经是完整的,TAB键则是本来的移动功能;而路径的话要看命令自身的行为决定后续动作。

二、历史命令

1、history命令可以显示历史执行过的命令;

2、使用!+序号执行该序号对应的命令;

3、使用!+字符执行该字符开头的最后一次执行的指令。

三、命令别名

1、实现别名:alias ddd="df -Th";

2、删除别名:unalias ddd;

3、显示所有别名命令列表:alias;

4、存放位置:~/.bashrc  (加入该文件后,重启后不会消失)。

四、重定向

1、重定向标准输入:<命令接收输入的途径由键盘改为文件;

2、重定向标准输出:>将命令的执行结果输出到指定文件,而不是直接显示到屏幕;

3、重定向标准输出:>>将命令的执行结果追加输出到指定文件;

4、重定向标准错误:2>清除指定文件的内容,并把标准错误信息保存到指定文件;

5、重定向标准错误:2>>标准错误信息追加到指定文件;

6、重定向标准输出和标准错误:&>  将标准输出、标准错误信息全部保存到指定文件,而不是直接显示在屏幕上。

是如何省级的呢?在支持升级的情况下,在系统中使用终端升级glibc才是最好最安全的。而原因:glibc是linux *** 作系统中的底层运行库,就算是系统终端中所执行的命令都是依靠glibc来完成执行的!所以在libc6.so这个文件被替换的时候很可能会发生系统无法执行 *** 作的现象。libc系统库升级时,系统会执行一些列的脚本来防止系统崩溃。因为libc的重要性,所以在软件能够被支持的情况下,不建议去升级系统底层依赖库libc6!!


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

原文地址: http://outofmemory.cn/yw/8893236.html

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

发表评论

登录后才能评论

评论列表(0条)

保存