1
//
example_1.c
2
3
#include <stdio.h>
4
5
int
main(
void
){
6
printf(
"
Hello World!! .\n
"
);
7
return
0
;
8
}
1
//
example_2.c
2
#include <unistd.h>
3
#include <stdarg.h>
4
#include <time.h>
5
#include <sys/types.h>
6
#include <sys/wait.h>
7
#include <stdio.h>
8
#include <stdlib.h>
9
10
int
tprintf(
const
char
*
fmt, ...){
11
va_list args;
12
struct
tm *
tstruct;
13
time_t tsec;
14
tsec =
time(NULL);
15
tstruct = localtime(&
tsec);
16
printf(
"
%02d:%02d:%5d|
"
, tstruct->tm_hour, tstruct->tm_min, tstruct->
tm_sec, getpid());
17
va_start(args, fmt);
18
return
vprintf(fmt, args);
19
}
20
int
main(){
21
int
i=
0
, j=
0
;
22
int
pid;
23
printf(
"
Hello from Parent Process , PID is %d.\n
"
, getpid());
24
pid =
fork();
25
if
(pid ==
0
){
26
sleep(
1
);
27
for
(i=
0
; i<
3
; ++
i){
28
printf(
"
Hello from Child Process %d. %d times\n
"
, getpid(), i+
1
);;
29
sleep(
1
);
30
}
31
}
32
else
if
(pid != -
1
){
33
tprintf(
"
Parent forked one child process -- %d.\n
"
, pid);
34
tprintf(
"
Parent is waiting for child to exit.\n
"
);
35
waitpid(pid, NULL,
0
);
36
tprintf(
"
Child Process has exited.\n
"
);
37
tprintf(
"
Parent had exited.\n
"
);
38
}
39
else
tprintf(
"
Everyting was done without error\n
"
);
40
return
0
;
41
}
example_3.c
1
#include <unistd.h>
2
#include <stdarg.h>
3
#include <time.h>
4
#include <sys/types.h>
6
#include <sys/wait.h>
7
#include <stdio.h>
8
#include <stdlib.h>
9
10
int
tprintf(
const
char
*
fmt, ...);
11
12
int
main(
int
argc,
char
const
*
argv[])
13
{
14
int
pid;
15
pid =
fork();
16
if
(pid ==
0
){
17
sleep(
5
);
18
tprintf(
"
Hello from Child Process !\n
"
);
19
tprintf(
"
I am calling exec.\n
"
);
20
execl(
"
/bin/ps
"
,
"
-a
"
, NULL);
21
tprintf(
"
You should never see this because child is already gone.\n
"
);
22
}
23
else
if
(pid != -
1
){
24
tprintf(
"
Hello from Parent, pid %d.\n
"
, getpid());
25
sleep(
1
);
26
tprintf(
"
Parent forked process %d.\n
"
, pid);
27
sleep(
1
);
28
tprintf(
"
Parent is waiting for child to exit.\n
"
);
29
waitpid(pid, NULL,
0
);
30
tprintf(
"
Parent had exited.\n
"
);
31
}
32
else
tprintf(
"
Everything was done without error.\n
"
);
33
return
0
;
34
}
35
36
int
tprintf(
const
char
*
fmt, ...){
37
va_list args;
38
struct
tm *
tstruct;
39
time_t tsec;
40
tsec =
time(NULL);
41
tstruct = localtime(&
tsec);
42
printf(
"
%02d:%02d:%5d|
"
, tstruct->tm_hour, tstruct->tm_min, tstruct->
tm_sec, getpid());
43
va_start(args, fmt);
44
return
vprintf(fmt, args);
45
}
homework_1.c
1
#include <stdio.h>
2
#include <unistd.h>
3
#include <sys/types.h>
4
#include <sys/wait.h>
5
#include <stdlib.h>
6
7
int
main(){
8
int
pid;
9
pid =
fork();
10
if
(pid >
0
){
11
pid =
fork();
12
if
(pid >
0
){
13
printf(
"
parent : pid = %d\n
"
, getpid());
14
waitpid(pid, NULL,
0
);
15
printf(
"
Child Process has exited.\n
"
);
16
printf(
"
Parent had exited\n
"
);
17
exit(
1
);
18
}
19
else
if
(pid ==
0
){
20
printf(
"
child 2 : pid = %d\n
"
, getpid());
21
exit(
0
);
22
}
23
}
24
else
if
(pid ==
0
){
25
printf(
"
child 1 : pid = %d\n
"
, getpid());
26
exit(
0
);
27
}
28
return
0
;
29
}
homework_2.c
1
#include <stdio.h>
2
#include <unistd.h>
3
#include <sys/types.h>
4
#include <sys/wait.h>
5
#include <stdlib.h>
6
7
int
main(){
8
int
pid;
9
int
n, i;
10
scanf(
"
%d
"
, &
n);
11
for
(i=
0
;i<n;++
i){
12
pid =
fork();
13
if
(pid ==
0
){
14
printf(
"
child : pid : %d , ppid : %d \n
"
, getpid(), getppid());
15
continue
;
16
}
17
else
if
(pid >
0
){
18
waitpid(pid, NULL,
0
);
19
exit(
1
);
20
}
21
}
22
return
0
;
23
}
#include <stdio.h>
#include
<unistd.h>
#include
<sys/wait.h>
#include
<stdlib.h>
int
main(
int
argc,
char
const
*
argv[])
{
int
pid[
5
];
int
i;
for
(i=
0
;i<
5
;++
i){
pid[i]
=
fork();
if
(pid[i]==
0
){
printf(
"
zi(%d) pid: %d, fu pid: %d \n
"
, i+
1
, getpid(), getppid());
exit(
0
);
}
}
for
(i=
0
;i<
5
;++
i)
waitpid(pid[i], NULL,
0
);
printf(
"
fupid: %d \n
"
, getpid());
return
0
;
}

