作业社区
探索学习新天地,共享知识资源!
蜡笔小方哎 的学生作业:
#include #include #include #include #include #include #include #include #include #include #define SEM_SET_PATH "." #define SEM_SET_PROJ_ID 'C' union semun{ unsigned short* array; }; // 得到当前时间字符串,精确到毫秒 // 参数一是字符串变量,参数二是它的长度 void get_time_str_ms(char *time_str, int len) { struct timeval tv; struct timezone tz; struct tm *p; memset(time_str, 0, len); gettimeofday(&tv,&tz); p = localtime(&tv.tv_sec); sprintf(time_str,"%d-%02d-%02d %02d:%02d:%02d", (1900+p->tm_year),(1+p->tm_mon),p->tm_mday,(p->tm_hour),p->tm_min,p->tm_sec); } int main() { key_t key; pid_t pid; int semid; union semun s; unsigned short values[2] = {1, 0}; s.array = values; char* filename = "test.txt"; key = ftok(SEM_SET_PATH, SEM_SET_PROJ_ID); if(key == -1) { perror("ftok() error!\n"); exit(-1); } printf("key = %d\n", key); semid = semget(key, 2, IPC_CREAT|0644); if(semid == -1) { perror("semget() error!\n"); exit(-1); } printf("semid = %d\n", semid); if(semctl(semid, 0, SETALL, s) == -1) { perror("semctl() SETALL error!\n"); exit(-1); } pid = fork(); if(pid == -1) { perror("fork() error!\n"); exit(-1); } else if(pid == 0) { char time[50]; FILE* fp; struct sembuf sops; sops.sem_flg = SEM_UNDO; for(int i=0; i