HI,
i am trying to multiply 2 2D arrays (a[2][3],b[3][4]) using fork.
The answer will be at c[2][4].
Each child have to calculate 1 row of c[2][4].
The code is right, as i think of it, with no errors but i dont get the correct c array...
I think there is maybe a mistake in i dimension ...
Anyway, here is the code:
Any help, please ?
First, move your initialisation of m to the start of the loop:
That would only affect your [0][0] value though.
The reason you're not seeing the result you expect is that you're not passing back the computed value from the child to the parent. With fork(), the child receives a copy of the process, but any manipulations to the data segment are local to the child. If you memset() your result array to -99 or something, you'll notice that it's still -99 at the end.
To pass back values from the child, have a look at creating a pipe that the child can write to and the parent can read from. See the man(2) page for pipe which will have all the details that you'll need.
Are you expecting child processes storing numbers in their copy of array c to update array c in the parent?
I didnt knew that child processes use a copy of the variables i use. i should re-check the man fork(). Yes i want to update array c in the parent. Looking pipes ...
---------- Post updated at 07:01 PM ---------- Previous update was at 07:00 PM ----------
Quote:
Originally Posted by agama
The reason you're not seeing the result you expect is that you're not passing back the computed value from the child to the parent. With fork(), the child receives a copy of the process, but any manipulations to the data segment are local to the child. If you memset() your result array to -99 or something, you'll notice that it's still -99 at the end.
To pass back values from the child, have a look at creating a pipe that the child can write to and the parent can read from. See the man(2) page for pipe which will have all the details that you'll need.
Initiliazation corrected. Just looking for the use of pipes...
---------- Post updated at 08:40 PM ---------- Previous update was at 07:01 PM ----------
Ok, i read about pipe.
Trying to figure out how it works, i made an easy example.
The program makes a multiply of 2 integers (a and b) and saves the answer to c...
It works with no errors or notifications...
But when i tried with the arrays, troubles appeared again...
Any help?
Based on my first code and adding pipes i have this :
Of course, it doesnt works. Its unfinished. But i want help...
I will update it when i change something...
Only have time for a quick look, but this is what jumped out at me:
Write is not like printf(), it takes a buffer of data and a length and doesn't do any formatting. You had the right idea in your first test (without arrays), but you need to give write the length -- you gave it 'c' which probably caused write to grab too many bytes depending on the value of c.
I added a new line -- you'll need some form of space between the data that the parent process will be reading.
There are many things wrong with the pipe and array code...not initalizing m[4] to 0 before using it in the addition and in the parent you are not reading the value into c[i][j] but instead putting it into buff.
I am trying to remove the last letter in a file and then multiply each line (which contained this letter) by 500. This is what I have:
1499998A
1222222A
1325804A
1254556
1235
9998
777
cat /tmp/listzz |gawk '{print $4}'|gawk '{gsub(//, ""); print } This removes the A... (1 Reply)
Hi Experts,
Please help with the following.
I have 3 columns in File 1 , variables with values nested within groups.
File 1
gr1 var1 a
gr1 var2 b
gr1 var3 a
gr1 var4 c
gr2 var1 a
gr2 var2 a
gr2 var4 c
gr3 var1 b
gr3 var3 b
gr3 var4 a
gr3 var5 a (3 Replies)
I have 2 files, that look like this:
ID SNP1 SNP2 SNP3 SNP4
A1 1 2 0 2
A2 2 0 1 1
A3 0 2 NA 1
A4 1 1 0 2
and this:
SNP score
SNP1 0.5
SNP2 0.7
SNP3 0.8
SNP4 0.2
Basically, all of the SNP-values are 0,1, 2 or NA, and they each have a score, listed in the second file. The total... (5 Replies)
I am trying to take all the elements of an array and multiply them by 2, and then copy them to a new array. Here is what I have
i=0
for true in DMGLIST
do
let DMGSIZES2="${DMGSIZES}"*2
let i++
done
unset i
echo ${DMGSIZES2}
It does the calculation correctly for the first element,... (7 Replies)
hello,
I'm writing a php script in fedora to run with a csv file. I want the script to read column 4 and multiply each single line in the column by 1000, how would that script look? I've written one script but it's obviously incorrect because it will not execute the command.
here is my... (4 Replies)
Hi, this is my code.It's simple : there are 2 2D arrays and the multiplied to C.
#include<stdio.h>
#include<sys/shm.h>
#include<sys/stat.h>
#include<stdlib.h>
main()
{
int *A; //A
int *B; //B
int *C; //C
int i,j,x,k,d;
int id;
... (17 Replies)
if i declare both but don't input any variables what values will the int array and file pointer array have on default, and if i want to reset any of the elements of both arrays to default, should i just set it to 0 or NULL or what? (1 Reply)
Im very new to programming. But I would like to write a script which extracts and multiply values from 2 txt and output as a new file. Can someone please teach me how to write it? Thank you so much
for example
File A File B
1 34 1 2
2 13 2 2
3 8 3 3
File C output
1 68
2... (2 Replies)
Is there a way that i can get something like this to work:
Number=`expr 80 \* 10.69`
i.e. To multiply an integer by a decimal or a decimal by a decimal etc...?
thanks (10 Replies)
Hi
$ a=10 ; b=2
$ expr $a + $b
12
$ expr $a - $b
8
$ expr $a / $b
5
$ expr $a * $b
expr: syntax error
Any idean why I am getting this error only when multiplying two numbers. Whats the exact syntax?
Thanks a lot to all in advance
CSaha (5 Replies)