为了账号安全,请及时绑定邮箱和手机立即绑定

作业社区

探索学习新天地,共享知识资源!

0 提交作业
0 布置作业
0 满分作业
得分 100
学习任务

SamstagBaron 的学生作业:

#include #include #include #include #include #include #include #include #define FIFO_NAME "./fifo" #define MAXEVENTS 10 int main(void) { int epfd,ret; struct epoll_event ev;// 请求事件结构体 struct epoll_event ret_ev[MAXEVENTS]; epfd = epoll_create(1); if (epfd == -1){ perror("[ERROR] epoll_create(): "); } printf("epfd = %d\n",epfd); pid_t pid = fork(); if(pid==-1){ perror("[ERROR] fork() : "); exit(EXIT_FAILURE); } else if(pid==0){ if(access(FIFO_NAME,F_OK)==-1) mkfifo(FIFO_NAME,0644); char wbuffer[100]={0}; int fd = open(FIFO_NAME,O_WRONLY|O_NONBLOCK); int wbytes; while(1){ fgets(wbuffer,sizeof(wbuffer),stdin); wbytes = write(fd,wbuffer,strlen(wbuffer)); if(wbuffer0){ while(access(FIFO_NAME,F_OK)==-1); int fd = open(FIFO_NAME,O_RDONLY|O_NONBLOCK); ev.data.fd = fd; // 设置文件描述符 ev.events = EPOLLIN;// 设置事件 ret = epoll_ctl(epfd,EPOLL_CTL_ADD,fd,&ev); if (ret == -1){ perror("[ERROR] epoll_ctl(): "); exit(EXIT_FAILURE); } char buffer[64] = {0}; while(1){ ret = epoll_wait(epfd,ret_ev,MAXEVENTS,1000);// 等待文件描述符关联的事件发生 if (ret == -1){ perror("[ERROR] select(): "); exit(EXIT_FAILURE); }else if (ret == 0){ // 超时返回 printf("Timeout.\n"); }else if (ret > 0){ int rbytes; for(int i=0;i0){ buffer[rbytes]='\0'; printf(" %s",buffer); if(strncmp(buffer,"quit",4)==0){ printf("good by\n"); goto END; } } else{ perror("Read Error"); break; } } } } } } END: close(fd); } return 0; } 【图片】

得分 100
学习任务

jelasin 的学生作业:

#include #include #include #include #include #include #include #include #include #include #include #define ITERATIONS 10 void write_time_to_file(FILE *file) { time_t rawtime; struct tm *timeinfo; char buffer[80]; time(&rawtime); timeinfo = localtime(&rawtime); strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", timeinfo); fprintf(file, "%s", buffer); fflush(file); } int main() { struct sigaction sa; sa.sa_handler = SIG_IGN; sigemptyset(&sa.sa_mask); sa.sa_flags = SA_NOCLDWAIT; sigaction(SIGCHLD, &sa, NULL); FILE *file = fopen("output.txt", "w"); if (file == NULL) { perror("fopen"); exit(EXIT_FAILURE); } sem_t *sem_parent = sem_open("/sem_parent", O_CREAT | O_EXCL, 0644, 1); sem_t *sem_child = sem_open("/sem_child", O_CREAT | O_EXCL, 0644, 0); if (sem_parent == SEM_FAILED || sem_child == SEM_FAILED) { fprintf(stderr, "sem_open failed\n"); if (errno == EEXIST) { fprintf(stderr, "Semaphore already exists\n"); if (sem_unlink("/sem_parent") < 0) { perror("sem_unlink"); exit(EXIT_FAILURE); } if (sem_unlink("/sem_child") < 0) { perror("sem_unlink"); exit(EXIT_FAILURE); } sem_t *sem_parent = sem_open("/sem_parent", O_CREAT, 0644); sem_t *sem_child = sem_open("/sem_child", O_CREAT, 0644); if (sem_trywait(sem_parent) < 0) { perror("sem_trywait"); } if (sem_trywait(sem_child) < 0) { perror("sem_trywait"); } } else { fprintf(stderr, "Error: %s\n", strerror(errno)); perror("sem_open"); sem_close(sem_parent); sem_close(sem_child); sem_unlink("/sem_parent"); sem_unlink("/sem_child"); fclose(file); exit(EXIT_FAILURE); } } pid_t pid = fork(); if (pid < 0) { perror("fork"); sem_close(sem_parent); sem_close(sem_child); sem_unlink("/sem_parent"); sem_unlink("/sem_child"); fclose(file); exit(EXIT_FAILURE); } if (pid == 0) { for (int i = 0; i < ITERATIONS; i++) { sem_wait(sem_child); sleep(1); fprintf(stderr, "Child: %d time\n", i); write_time_to_file(file); sem_post(sem_parent); } fclose(file); sem_close(sem_parent); sem_close(sem_child); exit(EXIT_SUCCESS); } else { for (int i = 1; i

微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号