From beca338fa1cb4870923d84f090eaf7edbbb1ad11 Mon Sep 17 00:00:00 2001 From: SeanOne Date: Wed, 20 Feb 2019 12:15:16 -0800 Subject: [PATCH 1/6] initial fork & clone | attendence --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 4b8dba5fa..6e2be272f 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,4 @@ + # Processes and System Calls Now that we've talked a bit about how processes and system calls work at a high level, it's time to apply these concepts by doing some exercises related to process creation and making system calls. We'll be utilizing the `fork()`, `exec()`, `wait()`, and `pipe()` system calls in order to create processes and even have them pass messages to each other. From 6484ec55633cf3aeceefccc3e2cac45233a6db16 Mon Sep 17 00:00:00 2001 From: SeanOne Date: Wed, 20 Feb 2019 12:16:57 -0800 Subject: [PATCH 2/6] add git for airtable ref --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6e2be272f..64c2be1a0 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ - + # Processes and System Calls Now that we've talked a bit about how processes and system calls work at a high level, it's time to apply these concepts by doing some exercises related to process creation and making system calls. We'll be utilizing the `fork()`, `exec()`, `wait()`, and `pipe()` system calls in order to create processes and even have them pass messages to each other. From 7d7743927a5183e4cb72452caf9f35c55874d0ec Mon Sep 17 00:00:00 2001 From: SeanOne Date: Thu, 21 Feb 2019 15:58:16 -0800 Subject: [PATCH 3/6] ex1 complete --- ex1/ex1 | Bin 0 -> 8520 bytes ex1/ex1.c | 15 ++++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 ex1/ex1 diff --git a/ex1/ex1 b/ex1/ex1 new file mode 100644 index 0000000000000000000000000000000000000000..69ac956074100616ba37477c71ec80f59c89b4bd GIT binary patch literal 8520 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 literal 0 HcmV?d00001 diff --git a/ex1/ex1.c b/ex1/ex1.c index c4b111641..7c40448c1 100644 --- a/ex1/ex1.c +++ b/ex1/ex1.c @@ -9,6 +9,19 @@ int main(void) { // Your code here - + int x = 100; + int rc = fork(); + // if fork fails return value is -1 + if(rc < 0){ + // 'fprintf' is like 'printf' except you add (where, how, what) + fprintf(stderr, "failing forks\n"); + exit(1); + } else if (rc == 0) { + // successful child fork will return a 0, so this would select the child process + printf("This is a child pid: %d\n", (int) getpid()); + } else { + printf("This is the parent pid: %d parent to child pid: %d\n", (int) getpid(), rc); + } + // printf("%d", x); return 0; } From b093f4574c2e0f193d957222113a5ddfc9b5b072 Mon Sep 17 00:00:00 2001 From: SeanOne Date: Thu, 21 Feb 2019 18:30:14 -0800 Subject: [PATCH 4/6] finished up ex2 | I am not sure the output but I am able to read/write --- ex2/ex2 | Bin 0 -> 8656 bytes ex2/ex2.c | 25 ++++++++++++++++++++++++- ex2/text.txt | 2 ++ 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 ex2/ex2 diff --git a/ex2/ex2 b/ex2/ex2 new file mode 100644 index 0000000000000000000000000000000000000000..b246ef69f7d606d0635997133c4241612cd3c883 GIT binary patch literal 8656 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 UDW$V(W&3G$6<%aTg?{^g1A)$F;{X5v literal 0 HcmV?d00001 diff --git a/ex2/ex2.c b/ex2/ex2.c index 4245375b9..71593f462 100644 --- a/ex2/ex2.c +++ b/ex2/ex2.c @@ -9,6 +9,29 @@ int main(void) { // Your code here - + FILE *ptr_file; + char buf[1000]; + int rc = fork(); + + ptr_file = fopen("./text.txt", "r+"); + if(!ptr_file) { + return 1; + } + + while (fgets(buf,1000, ptr_file) != NULL) + if(rc < 0) { + fprintf(stderr, "unable to fork\n"); + exit(1); + } else if (rc == 0) { // this is the child fork + fputs("This has been added from the child process\n", ptr_file); + printf("This is from the child: %s\n", buf); + + } else { // this is the parent + fputs("This has been added from the parent process\n", ptr_file); + printf("This is from the Parent: %s\n", buf); + } + + fclose(ptr_file); + return 0; } diff --git a/ex2/text.txt b/ex2/text.txt index e69de29bb..d29fb00bb 100644 --- a/ex2/text.txt +++ b/ex2/text.txt @@ -0,0 +1,2 @@ +this is the text fileThis has been added from the parent process +This has been added from the child process From 22d948f02bfa148274c3a3e0b675c54c50fd8786 Mon Sep 17 00:00:00 2001 From: SeanOne Date: Thu, 21 Feb 2019 19:59:10 -0800 Subject: [PATCH 5/6] finished ex3 project --- ex3/ex3 | Bin 0 -> 8472 bytes ex3/ex3.c | 10 ++++++++++ 2 files changed, 10 insertions(+) create mode 100644 ex3/ex3 diff --git a/ex3/ex3 b/ex3/ex3 new file mode 100644 index 0000000000000000000000000000000000000000..6d16981436ff7e3bc3450a27a3c59d0337dd3dc2 GIT binary patch literal 8472 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 Date: Thu, 21 Feb 2019 23:04:08 -0800 Subject: [PATCH 6/6] workingo n ex4 & ex5 --- ex4/ex4.c | 11 ++++++++++- ex5/ex5.c | 11 ++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/ex4/ex4.c b/ex4/ex4.c index 0221ca96e..ec84dbf48 100644 --- a/ex4/ex4.c +++ b/ex4/ex4.c @@ -10,7 +10,16 @@ int main(void) { - // Your code here + // Your code here + int rc = fork(); + if (rc < 0) { + fprintf(stderr, "forking fail\n"); + exit(1); + } else if (rc == 0) { + // child + } else { + // parent + } return 0; } diff --git a/ex5/ex5.c b/ex5/ex5.c index cbf3b8e61..66f7d3fd2 100644 --- a/ex5/ex5.c +++ b/ex5/ex5.c @@ -17,6 +17,15 @@ char* msg3 = "hello world #3"; int main(void) { // Your code here - + int rc = fork(); + + if (rc < 0) { + fprintf(stderr, "fail fail fail\n"); + exit(1); + } else if (rc == 0) { + // this is the child + } else { + // this is the parent + } return 0; }