需要三个文件
1.config.txt
2.changeData.c
3.demo.c
config.txt:
a=10
b=1
LENG=5
changeData.c
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include<stdio.h>
#include<unistd.h>
#include<string.h>
#include<stdlib.h>
int main( int argc, char **argv){
//传入一个文件
int fdSrc;
printf("changeing");
char *readBuf = NULL;
fdSrc = open(argv[1],O_RDWR);
int size = lseek(fdSrc,0,SEEK_END);
lseek(fdSrc,0,SEEK_SET);
readBuf = (char *)malloc(sizeof(char)*size+8);
read(fdSrc,readBuf,size);
char *p = strstr(readBuf,"LENG=");//查找"LENG="进行修改
p = p + strlen("LENG=");//指针移动到要修改的位置
//注意一定要''而不是""不然会出现错误
*p = '5'; //修改内容
lseek(fdSrc,0,SEEK_SET);//移动光标到头
//重新写入
int n_write = write(fdSrc,readBuf,strlen(readBuf));
printf("change done!");
close(fdSrc);
return 0;
}
编译changeData
gcc changeData.c -o changeData
demo.c
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
#include<stdlib.h>
int main(){
pid_t pid;
int a;
while(1){
printf("input date\n");
scanf("%d",&a);
if(a == 1){
pid = fork();
if(pid > 0){
wait(NULL);
}
if(pid == 0){
printf("change.....\n");
execl("./changeData","changeData","config.txt",NULL);
printf("change \n");
}
}else{
printf("nothing\n");
}
}
}
编译demo.c
gcc demo.c
输入1时修改配置文件