restart rep

This commit is contained in:
ada-dmitry
2023-11-03 15:02:03 +03:00
parent 580ec0f214
commit e24502699b
28 changed files with 1540 additions and 0 deletions
+77
View File
@@ -0,0 +1,77 @@
#include "func.h"
int main(int argc, char *argv[])
{
int pipefd[n][2], fd_ans;
caddr_t addr_ans;
pid_t cpid[n];
short mat1[n][n], mat2[n][n];
fd_ans = open(argv[2], O_RDWR | O_CREAT);
srand(time(NULL));
init_matr(n, mat1);
init_matr(n, mat2);
out_matr(n, mat1);
trans(n, mat2);
printf("\n");
out_matr(n, mat2);
printf("\n");
for (int i = 0; i < n; i++)
{
if (pipe(pipefd[i]) == -1)
{
perror("pipe");
exit(EXIT_FAILURE);
}
cpid[i] = fork();
if (cpid[i] == -1)
{
perror("fork");
exit(EXIT_FAILURE);
}
if (cpid[i] == 0)
{
int result[n];
close(pipefd[i][0]);
for (int j = 0; j < i; j++)
{
close(pipefd[j][0]);
close(pipefd[j][1]);
}
for (int j = 0; j < n; j++)
{
int sum = 0;
for (int k = 0; k < n; k++)
{
sum += mat1[i][k] * mat2[j][k];
}
result[j] = sum;
}
write(pipefd[i][1], result, n * sizeof(int));
close(pipefd[i][1]);
exit(EXIT_SUCCESS);
}
else
{
close(pipefd[i][1]);
}
}
printf("Resulting mat\n");
for (int i = 0; i < n; i++)
{
waitpid(cpid[i], NULL, WNOHANG);
int result[n];
read(pipefd[i][0], result, n * sizeof(int));
for (int j = 0; j < n; j++)
{
//printf("[%d] ", result[j]);
addr_ans = mmap((caddr_t)0, PROT_READ | PROT_WRITE, MAP_SHARED, fd_dst, 0);
}
printf("\n");
close(pipefd[i][0]);
}
exit(EXIT_SUCCESS);
}