Added Topic 6
This commit is contained in:
parent
5d52ecddc6
commit
b2342ecade
BIN
Topic-6/task_6_1
Executable file
BIN
Topic-6/task_6_1
Executable file
Binary file not shown.
32
Topic-6/task_6_1.c
Normal file
32
Topic-6/task_6_1.c
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
//
|
||||||
|
// Written for Computer Networks and Systems lab classes
|
||||||
|
// AUTHOR : Sergiusz Warga
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
void child_task() {
|
||||||
|
execl("/usr/bin/cal", "cal", "2021", NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
pid_t pid;
|
||||||
|
int status;
|
||||||
|
|
||||||
|
pid = fork();
|
||||||
|
|
||||||
|
if (pid == -1) { // If something went wrong.
|
||||||
|
perror("Fork: ");
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pid == 0) { // If this is a child process.
|
||||||
|
child_task();
|
||||||
|
exit(EXIT_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
wait(&status);
|
||||||
|
return 0;
|
||||||
|
}
|
BIN
Topic-6/task_6_2
Executable file
BIN
Topic-6/task_6_2
Executable file
Binary file not shown.
17
Topic-6/task_6_2.c
Normal file
17
Topic-6/task_6_2.c
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
//
|
||||||
|
// Written for Computer Networks and Systems lab classes
|
||||||
|
// AUTHOR : Sergiusz Warga
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
char msg_write[] = "write() to dup(1)\n";
|
||||||
|
int soutfd = dup(STDOUT_FILENO);
|
||||||
|
write(soutfd, msg_write, sizeof(msg_write));
|
||||||
|
|
||||||
|
FILE *fakeout = fdopen(soutfd, "w");
|
||||||
|
fprintf(fakeout, "using fprintf() on fakeout\n");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
BIN
Topic-6/task_6_3
Executable file
BIN
Topic-6/task_6_3
Executable file
Binary file not shown.
44
Topic-6/task_6_3.c
Normal file
44
Topic-6/task_6_3.c
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
//
|
||||||
|
// Written for Computer Networks and Systems lab classes
|
||||||
|
// AUTHOR : Sergiusz Warga
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/wait.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int pipefd[2];
|
||||||
|
if (pipe(pipefd) < 0) {
|
||||||
|
fprintf(stderr, "Something went wrong!\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
pid_t pid;
|
||||||
|
pid = fork();
|
||||||
|
|
||||||
|
if (pid == -1) { // If something went wrong.
|
||||||
|
perror("Fork: ");
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pid == 0) { // If this is a child process.
|
||||||
|
dup2(pipefd[1], STDOUT_FILENO);
|
||||||
|
printf("printf() from a child\n");
|
||||||
|
close(pipefd[1]);
|
||||||
|
exit(EXIT_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
char buff[100] = {};
|
||||||
|
|
||||||
|
while (read(pipefd[0], &buff, sizeof(buff)) > 0) {
|
||||||
|
printf("PARENT: %s", buff);
|
||||||
|
}
|
||||||
|
|
||||||
|
int status;
|
||||||
|
wait(&status);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
BIN
Topic-6/task_6_4
Executable file
BIN
Topic-6/task_6_4
Executable file
Binary file not shown.
44
Topic-6/task_6_4.c
Normal file
44
Topic-6/task_6_4.c
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
//
|
||||||
|
// Written for Computer Networks and Systems lab classes
|
||||||
|
// AUTHOR : Sergiusz Warga
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/wait.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int pipefd[2];
|
||||||
|
if (pipe(pipefd) < 0) {
|
||||||
|
fprintf(stderr, "Something went wrong!\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
pid_t pid;
|
||||||
|
pid = fork();
|
||||||
|
|
||||||
|
if (pid == -1) { // If something went wrong.
|
||||||
|
perror("Fork: ");
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pid == 0) { // If this is a child process.
|
||||||
|
dup2(pipefd[1], STDOUT_FILENO);
|
||||||
|
execl("/usr/bin/cal", "cal", NULL);
|
||||||
|
close(pipefd[1]);
|
||||||
|
exit(EXIT_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
char buff[200] = {};
|
||||||
|
|
||||||
|
while (read(pipefd[0], &buff, sizeof(buff)) > 0) {
|
||||||
|
printf("%s", buff);
|
||||||
|
}
|
||||||
|
|
||||||
|
int status;
|
||||||
|
wait(&status);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user