练习题:
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <sys/types.h>#include <unistd.h>#include <sys/stat.h>#include <fcntl.h>#include <pthread.h>#include <semaphore.h>#include <wait.h>#include <signal.h>#include <sys/socket.h>#include <arpa/inet.h>#include <sys/socket.h>#include <sys/ipc.h>#include <sys/sem.h>#include <semaphore.h>#include <sys/msg.h>#include <sys/shm.h>#include <sys/un.h>int flag=0;void *run (void *agv){while(1){while(1){if(flag==1){break;}}pid_t pid;if((pid=open("homework.txt",O_RDONLY))==EOF){perror("open");return "error";}char str[128]={0};int xiab=0;if((xiab=read(pid,str,128))==EOF){perror("error");return "error";}str[xiab]='\0';printf("str=%s\n",str);close(pid);sleep(3);flag=0;}}int main(int argc, const char *argv[]){pthread_t id;if(pthread_create(&id,0,run,0)!=0){perror("pthread_create");return -1;}while(1){while(1){if(flag==0){break;}}pid_t pid;if((pid=open("./homework.txt",O_WRONLY|O_CREAT|O_TRUNC,0666))==EOF){perror("open");return -1;}char str[128]={0};printf("shuruzifuchuan:");fgets(str,sizeof(str),stdin);if(write(pid,str,strlen(str))==EOF){perror("write");return -1;}close(pid); sleep(3);flag=1;}return 0;}