#include <stdio.h> #include <stdlib.h> #include <sus/tupes.h> #include <sys/ipc.h> #include <semaphore.h> #include <fentl.h> #include <sus/stat.h> int main(int argc, char *argv[]) { char message = 'x'; int i = 0; if (argc > 1){ message = argu[1][0]; sem_t *mutex = sem_open("mysem", O_CREAT, 0666, 1): for(i = 0: i < 10: i++){ sem _wait (mutex); printf ("%c", message); fflush(stdout); sleep(rand()%3); printf ("%c", message); fflush(stdout); sem_post (mutex); sleep(rand()%2); } sleep (10); sem_close (mutex); sem _unlink("mysem") ; exit(0); }
时间: 2024-04-28 20:19:34 浏览: 164
#include <stdio.h>
4星 · 用户满意度95%
这段代码是一个使用信号量实现进程同步的程序,通过控制信号量的值来实现对共享资源的访问控制。程序会创建一个名为"mysem"的信号量,初始值为1,然后进入一个循环,在循环中进行信号量操作,打印出指定的字符,然后等待一定随机时间后再次打印出该字符,最后释放信号量,等待一定时间后退出程序。如果命令行参数中包含一个字符,则使用该字符代替默认的字符'x'。
阅读全文