#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<fcntl.h>
#include<sys/wait.h> // 一个奇怪的事情,wait() 函数,在Linux 中,不需要这个 头文件,居然也可以执行
int main(){
pid_t pid;
int data = 0;
while(1){
printf("please input a data\n");
scanf("%d",&data);
if(data == 1){
pid = fork(); // 在这里创建了一个进程,
if(pid > 0){
int status;
wait(&status);
printf("status = %d\n",WEXITSTATUS(status)); // WEXITSTATUS
}
else if(pid == 0){ // 如果是子进程
int fdSrc;
char * readbuf = NULL;
fdSrc = open("file1",O_RDWR|O_CREAT,0600);
int size = lseek(fdSrc,0,SEEK_END);
lseek(fdSrc,0,SEEK_SET);
readbuf = (char *)malloc(sizeof(char) * size + 8);
int n_read = read(fdSrc,readbuf,size);
if(n_read <= 0){
printf("read error\n");
exit(-1);
}
char * p = strstr(readbuf,"A =");
if(p == NULL){
printf("not found\n");
exit(-1);
}
p = p + strlen("A =");
*p = '9';
lseek(fdSrc,0,SEEK_SET);
int n_write = write(fdSrc,readbuf,strlen(readbuf));
if(n_write <= 0){
printf("read error\n");
exit(-1);
}
printf("read and write is success\n");
close(fdSrc);
exit(100);
}
}
else{
printf("wait, do nothing\n");
}
}
return 0;
}
Linux 输入
cat file1
显示:
cat 是 linux 的一个指令