网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
10月08日漏签0天
c语言吧 关注:799,971贴子:4,365,171
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 1 2 3 下一页 尾页
  • 45回复贴,共3页
  • ,跳到 页  
<<返回c语言吧
>0< 加载中...

操作系统才刚学到进程,老师就让看程序,真心不会啊!

  • 只看楼主
  • 收藏

  • 回复
  • 哭才好
  • 酱油
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
各位操作系统学得好的大牛们。能帮我看一下不?
真不知道老师是怎么想的。


  • 哭才好
  • 酱油
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include <sys/types.h>
#include <sys/wait.h>
#include <errno.h>
#include <signal.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#define SIGNUM 10
#define MAX_ERROR 4
#define ITERATIONS 10
_VOLATILE int glov, gct;
int errct;
int subtest;
_PROTOTYPE(int main, (int argc, char *argv []));
_PROTOTYPE(void test1a, (void));
_PROTOTYPE(void parent, (void));
_PROTOTYPE(void child, (int i));
_PROTOTYPE(void test1b, (void));
_PROTOTYPE(void parent1, (int childpid));
_PROTOTYPE(void func, (int s));
_PROTOTYPE(void child1, (void));
_PROTOTYPE(void e, (int n));
_PROTOTYPE(void quit, (void));
int main(argc, argv)
int argc;
char *argv[];
{
int i, m = 0xFFFF;
sync();
if (argc == 2) m = atoi(argv[1]); printf("Test 1 ");
fflush(stdout); /* have to flush for child's benefit */
system("rm -rf DIR_01; mkdir DIR_01");
chdir("DIR_01");
for (i = 0; i < ITERATIONS; i++) {
if (m & 00001) test1a();
if (m & 00002) test1b();
}
quit();
return(-1); /* impossible */
}
void test1a()
{
int i, n, pid;
subtest = 1;
n = 4;
for (i = 0; i < n; i++) {
if ((pid = fork())) {
if (pid < 0) {
printf("\nTest 1 fork failed\n");
exit(1);
}
parent();
} else
child(i);
}
}
void parent()
{
int n;
n = getpid();
wait(&n);
}
void child(i)
int i;
{
int n;
n = getpid();
exit(100+i);
}
void test1b()
{
int i, k;
subtest = 2;
for (i = 0; i < 4; i++) {
glov = 0;
signal(SIGNUM, func);
if ((k = fork())) {
if (k < 0) {
printf("Test 1 fork failed\n");
exit(1);
}
parent1(k);
} else
child1();
}
}
void parent1(childpid)
int childpid;
{
int n;
for (n = 0; n < 5000; n++);
while (kill(childpid, SIGNUM) < 0) /* null statement */
;
wait(&n);
}
void func(s)
int s; /* for ANSI */
{
glov++;
gct++;
}
void child1()
{
while (glov == 0);
exit(gct);
}
void quit()
{
chdir("..");
system("rm -rf DIR*");
if (errct == 0)
{
printf("ok\n");
exit(0);
}
else
{
printf("%d errors\n", errct);
exit(1);
}
}


2025-10-08 10:06:04
广告
不感兴趣
开通SVIP免广告
  • 哭才好
  • 酱油
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

1 /* test 1 */
2
3 #include <sys/types.h>
4 #include <sys/wait.h>
5 #include <errno.h>
6 #include <signal.h>
7 #include <stdlib.h>
8 #include <unistd.h>
9 #include <stdio.h>
10
11 #define SIGNUM 10
12 #define MAX_ERROR 4
13 #define ITERATIONS 10


  • 哭才好
  • 酱油
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
14
15 _VOLATILE int glov, gct;
16 int errct;
17 int subtest;
18
19 _PROTOTYPE(int main, (int argc, char *argv []));
20 _PROTOTYPE(void test1a, (void));
21 _PROTOTYPE(void parent, (void));


  • 哭才好
  • 酱油
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
22 _PROTOTYPE(void child, (int i));
23 _PROTOTYPE(void test1b, (void));
24 _PROTOTYPE(void parent1, (int childpid));
25 _PROTOTYPE(void func, (int s));
26 _PROTOTYPE(void child1, (void));
27 _PROTOTYPE(void e, (int n));


  • 哭才好
  • 酱油
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
28 _PROTOTYPE(void quit, (void));
29
30 int main(argc, argv)
31 int argc;
32 char *argv[];
33 {
34 int i, m = 0xFFFF;
35
36 sync();
37


  • 哭才好
  • 酱油
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
38 if (argc == 2) m = atoi(argv[1]);
39
40 printf("Test 1 ");
41 fflush(stdout); /* have to flush for child's benefit */
42
43 system("rm -rf DIR_01; mkdir DIR_01");
44 chdir("DIR_01");
45
46 for (i = 0; i < ITERATIONS; i++) {


  • 哭才好
  • 酱油
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
47 if (m & 00001) test1a();
48 if (m & 00002) test1b();
49 }
50
51 quit();
52 return(-1); /* impossible */
53 }
54
55 void test1a()
56 {
57 int i, n, pid;


2025-10-08 10:00:04
广告
不感兴趣
开通SVIP免广告
  • 哭才好
  • 酱油
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
58
59 subtest = 1;
60 n = 4;
61 for (i = 0; i < n; i++) {
62 if ((pid = fork())) {//创建子进程
63 if (pid < 0) {
64 printf("\nTest 1 fork failed\n");
65 exit(1);


  • 哭才好
  • 酱油
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
66 }
67 parent();
68 } else
69 child(i);
70 }
71 }
72
73 void parent()
74 {
75
76 int n;
77
78 n = getpid();


  • 哭才好
  • 酱油
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
79 wait(&n);
80 }
81
82 void child(i)
83 int i;
84 {
85 int n;
86
87 n = getpid();
88 exit(100+i);


  • 哭才好
  • 酱油
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
89 }
90
91 void test1b()
92 {
93 int i, k;
94
95 subtest = 2;
96 for (i = 0; i < 4; i++) {
97 glov = 0;
98 signal(SIGNUM, func);


  • 哭才好
  • 酱油
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
99 if ((k = fork())) {
100 if (k < 0) {
101 printf("Test 1 fork failed\n");
102 exit(1);
103 }
104 parent1(k);
105 } else
106 child1();
107 }
108 }
109
110


  • 哭才好
  • 酱油
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
111 void parent1(childpid)
112 int childpid;
113 {
114
115 int n;
116
117 for (n = 0; n < 5000; n++);
118 while (kill(childpid, SIGNUM) < 0) /* null statement */
119 ;
120 wait(&n);
121 }


2025-10-08 09:54:04
广告
不感兴趣
开通SVIP免广告
  • 哭才好
  • 酱油
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
122
123 void func(s)
124 int s; /* for ANSI */
125 {
126 glov++;
127 gct++;
128 }
129
130 void child1()
131 {
132 while (glov == 0);
133 exit(gct);


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1 2 3 下一页 尾页
  • 45回复贴,共3页
  • ,跳到 页  
<<返回c语言吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示