How I can explain this?


 
Thread Tools Search this Thread
# 1  
Wrench How I can explain this?

Hi friends! I'm learning UNIX and I have a small question. Working with Shell, i put the name of one executable (in c language) + one number and it says this:

Code:
$ gcc misterioso_4.c 
$ ./misterioso_4 6 

[4841] got: [4667],[2] 

I can not find an answer in the manual because I havent applied any variable.

Thanks for all!

Last edited by Scott; 01-03-2013 at 06:21 PM.. Reason: Code tags
# 2  
On the top of my head I can think of two things.
1. Is your C program coded to handle an argument, such as 6?
2. And the compiled output of gcc is usually an object file "a.out". Unless you've renamed a.out to misterioso_4, I don't see how you mean to run the C program by typing ./misterioso_4. Please re-check.
# 3  
I think 2, code acts on a child process.
The code is this:

Code:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/wait.h>
#define BUFSIZE 256
int main(int argc, char *argv[])
{
pid_t childpid;
int fd[2], status, exit_code, a, b, x;
char buf[BUFSIZE];
unsigned strsize;
exit_code = EXIT_SUCCESS;
if (argc != 2)
{
printf(“Usage: %s digito_2\n”, argv[0]);
exit_code = EXIT_FAILURE;
}
else
{
if (pipe(fd) != 0)
{
perror(“Could not create the pipe\n”);
exit_code = EXIT_FAILURE;
}
else
{
switch (childpid = fork())
{
case -1:
perror(“Could not fork\n");
exit_code = EXIT_FAILURE;
break;
case 0:
if (dup2(fd[1], STDOUT_FILENO) < 0)
{
perror(“Child: fd duplication failed\n”);
exit_code = EXIT_FAILURE;
}
else
{
close(fd[0]);
close(fd[1]);
a = (int) getpid();
b = atoi(argv[1]);
sprintf(buf, “[%d],[%d]\n”, a, a % b);
strsize = strlen(buf) + 1;
if (write(STDOUT_FILENO, buf, strsize) != strsize)
{
perror(“Child: write to pipe failed\n”);
exit_code = EXIT_FAILURE;
}
} // else
break;
default:
if (dup2(fd[0], STDIN_FILENO) < 0)
{
perror(“Parent: fd duplication failed\n”);
exit_code = EXIT_FAILURE;
}
else
{
close(fd[0]); 
close(fd[1]); 
if (x = wait(&status) != childpid)
{
perror(“Parent: unexpected error\n”);
}
else
{
if (status == 0)
{
if (read(STDIN_FILENO, buf, BUFSIZE) <= 0)
{
perror(“Parent: pipe read failed\n”);
exit_code = EXIT_FAILURE;
}
else
{
printf(“[%d] got: %s\n”, (int) getpid(), buf);
}
}
else
{
perror(“Parent: child had problems\n”);
exit_code = EXIT_FAILURE;
}
}
} // end if default
} // end switch
} // end if pipe
} //end if argc
exit(exit_code);
} // end main

# 4  
Sorry, 6 is the argument. Why apperars [num] got: [num], [num]?? Is the PID?
# 5  
Code:
[num] got: [num], [num]

  1. [num] is the Parent PID
  2. [num] is the Child PID
  3. [num] is the result of modulo operation performed below:
Code:
sprintf(buf, "[%d],[%d]\n", a, a % b);

Then result is printed:
Code:
printf("[%d] got: %s\n", (int) getpid(), buf);

# 6  
Thanks!!

Thanks!! Now, I stand it! Smilie
 

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Can someone explain this for me?

Can someone do me a favour and explain the following for me: ((r=$RANDOM%$n+1)) I know what $RANDOM does but what is % sign and what does it do with %$n+1? (2 Replies)
Discussion started by: bashily
2 Replies

2. Shell Programming and Scripting

anyone can explain this?

why the case 2 will happen ? , ' should stop the history substitution ,shouldn't it? case 1 # echo "123"|sed '/123/!d' 123 case 2 # echo "123 > 456 > 1 > "|sed '/123/!d' -bash: !d': event not found case 3 # echo "123 > 456 > 12 > "|sed '/123/'\!d 123 # bash --version (1 Reply)
Discussion started by: justlooks
1 Replies

3. Shell Programming and Scripting

Explain $# please

I'm trying to follow a script and I see it begins with this: if ; then if ; then print "blah $0 blah blah " exit fi fi What does $# mean? I found out that $1 refers to the shell environment and the last argument that was entered or passed in the previous command. I couldn't find $#... (2 Replies)
Discussion started by: MaindotC
2 Replies

4. Homework & Coursework Questions

Could anyone help explain this?

1. The problem statement, all variables and given/known data: I have a retake assignment to complete for my computer networks and OS class. This isn't really my area, had I known last year I could have swapped it for a different module I would have done so. I'm determined to get through it... (6 Replies)
Discussion started by: Squall Moogle
6 Replies

5. Shell Programming and Scripting

can any one explain this example

hi all i have an example i want one help me to understand cause i tried to test it but almost fail and i don't know how can i solve this problem " the main idea to read from two files and replace something from one to another " but i don't understand why it fail all time $ cat main.txt... (4 Replies)
Discussion started by: maxim42
4 Replies

6. UNIX for Dummies Questions & Answers

Please explain this

if then echo "Syntax: $0 <sid> <COLD/HOT> <DEST>" exit fi if --------------what does this mean??? echo "Syntax: $0 <sid> <COLD/HOT> <DEST>"---pls explain this as well (2 Replies)
Discussion started by: appsdba.nitin
2 Replies

7. AIX

can anyone explain this?

this is the mksys b script.... can anyone explain .. what # and 1 in if condition this is the first line of the script... it is not from middle of the script.... if then echo "Not enough parameters, need a client name for mksysb" Usage="Usage: $0 <client name>" ... (2 Replies)
Discussion started by: honeym210
2 Replies

8. Shell Programming and Scripting

please explain the below

could u please convert the below statement to shell script ---------- logdir=/smp/dyn/logfiles/cpm/pgm/pgIm $logdir = $logdir ."/pgIm${toDate}*"; ---- could u please explain the below clearly grep -i adding $logdir | grep -iv equation | awk '{print \$NF}' | sort -u | sed -e... (1 Reply)
Discussion started by: mail2sant
1 Replies

9. Shell Programming and Scripting

Please can any one explain this ${0##/}

I did not understand what is ${0##/} PGM=${0##/} TMP=/tmp/${PGM}.$$ Please explain me. (2 Replies)
Discussion started by: gadege
2 Replies

10. Shell Programming and Scripting

please explain this

zsh 4.3.4% cat file ACFCFACCACARCSHFARCVJVASTVAJFTVAJVGHBAJ zsh 4.3.4% cat file1 A C F R zsh 4.3.4% <file1 while read;do printf "%s=%d\n" "$REPLY" "${#$(<file)//}";done A=9 C=7 F=4 R=2 That was the previous post. But , can anybody can explain me in detail about this line zsh... (2 Replies)
Discussion started by: dummy_needhelp
2 Replies

Featured Tech Videos