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

作业社区

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

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

weixin_慕哥3021856 的学生作业:

sem.h #ifndef __SEM_H_ #define __SEM_H_ #include #include #include #include #include #include #include #include #define SEM_PATHNAME "." #define SEM_PROJ_ID 100 union semun { unsigned short *array;// SETALL }; extern int sem_create(int nsems, unsigned short values[]); extern int sem_p(int semid, int semnum); // 占用资源 extern int sem_v(int semid, int semnum); // 释放资源 extern int sem_del(int semid); // 删除信号量集 #endif main.c #include #include "semop.h" #define SEM_CONTROL_P 0 // 控制父进程的信号量编号 #define SEM_CONTROL_C 1 // 控制子进程的信号量编号 int main(void) { int semid; pid_t cpid; FILE *fp = NULL; time_t cur_time; struct tm *time_info; unsigned short values[2] = {1, 0}; char filepath[] = "./datetime.txt"; char buffer[32] = {0}; semid = sem_create(2, values); if (semid == -1) { perror("sem create failed!\n"); return -1; } fp = fopen(filepath, "w"); if (fp == NULL) { perror("open failed!\n"); exit(-1); } fputs("\n", fp); fclose(fp); cpid = fork(); if (cpid == -1) { perror("[ERROR] fork()"); exit(EXIT_FAILURE); } else if (cpid == 0) { for (int n = 0; n < 10; n++) { cur_time = time(NULL); time_info = localtime(&cur_time); strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", time_info); sem_p(semid, SEM_CONTROL_C); fp = fopen(filepath, "a"); if (fp == NULL) { perror("open failed!\n"); exit(-1); } fputs(buffer, fp); fclose(fp); printf("Child process write successfully!\n"); sem_v(semid, SEM_CONTROL_P); } } else { for (int n = 1;n < 11; n++) { sem_p(semid, SEM_CONTROL_P); fp = fopen(filepath, "a"); if (fp == NULL) { perror("open failed!\n"); exit(-1); } fprintf(fp, "%d,\n"); sem_v(semid, SEM_CONTROL_P); fclose(fp); printf("Parent process write successfully!\n"); sleep(1); } } wait(NULL); sem_del(semid); return 0; } 【图片】

微信客服

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

帮助反馈 APP下载

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

公众号

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