Hi All,
I am new to this group. I am not sure whether this is the right place to ask
this kind
of question. Here is my doubt.

I wrote a simple C program.

#include<stdio.h>
#include<unistd.h>

int main()
{
       printf("Hello, World\n");
       sleep(10);
}

if i compile this program using "gcc sample.c -o sample" and run this using
'strace',

case 1) run as fg process using "strace ./sample" in command prompt


write(1, "Hello, World\n", 13Hello, World)          = 13
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGCHLD, NULL, {SIG_DFL}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
nanosleep({10, 0}, {10, 0})             = 0

case 2 ) run the above command with making this bg process (attaching &)
#strace ./sample &

same output

case 3) running the above command inside a shell script

tesh.sh

strace ./sample 2>&1 |tee my.log

if i run the shell script in command prompt using #./test.sh, i am getting
this output :

rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGCHLD, NULL, {SIG_DFL}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
nanosleep({10, 0}, {10, 0})             = 0
write(1, "Hello, World\n", 13Hello, World )          = 13

here the sequence is different :- first sleep()[nanosleep()] and then
write().

it looks surprising for me why the sequence is differet here. could anybody
please clarify me ?

Thanks a lot in advance :)

regards/santosh

Reply via email to