本文主要是介绍嵌入式操作系统网络编程(8),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
D4.7
//A B C
#include
<stdio.h>
#include
<stdlib.h>
#include
<unistd.h>
#include
<sys/sem.h>
#include
<sys/ipc.h>
int
main()
{
pid_t pid;key_t key = ftok("/tmp/sem1",
‘k’);
int semid = semget(key, 3, 0644 |
IPC_CREAT);
if (semid < 0){perror("sem get error!");exit(1);}//鍒濆鍖栦俊鍙烽噺semctl(semid, 0, SETVAL, 1);semctl(semid, 1, SETVAL, 0);semctl(semid, 2, SETVAL, 0);pid = fork();if (pid < 0){perror("fork error!");exit(1);}if (pid == 0){pid = fork();if (pid < 0){perror("fork frok
error!");
exit(1);}if (pid == 0){while (1){struct sembuf sem3;sem3.sem_num = 2;sem3.sem_op = -1;sem3.sem_flg = SEM_UNDO;semop(semid, &sem3, 1);sleep(1);printf("C\n");sleep(1);struct sembuf sem;sem.sem_num = 0;sem.sem_op = 1;sem.sem_flg = SEM_UNDO;semop(semid, &sem, 1);}}else if (pid > 0){while (1){struct sembuf sem2;sem2.sem_num = 1;sem2.sem_op = -1;sem2.sem_flg = SEM_UNDO;semop(semid, &sem2, 1);sleep(1);printf("B\n");sleep(1);struct sembuf sem3;sem3.sem_num = 2;sem3.sem_op = 1;sem3.sem_flg = SEM_UNDO;semop(semid, &sem3, 1);}}}else if (pid > 0){while (1){struct sembuf sem;sem.sem_num = 0;sem.sem_op = -1;sem.sem_flg = SEM_UNDO;semop(semid, &sem, 1);sleep(1);printf("A\n");sleep(1);struct sembuf sem2;sem2.sem_num = 1;sem2.sem_op = 1;sem2.sem_flg = SEM_UNDO;semop(semid, &sem2, 1);}}return 0;
}
进程线程的编程练习题
D4.8
线程间通信
这篇关于嵌入式操作系统网络编程(8)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!