练习题:
#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; }