Sponsored Content
Top Forums Shell Programming and Scripting Pass return value of a function in background process Post 302966681 by kshji on Monday 15th of February 2016 11:42:49 AM
Old 02-15-2016
If you need really put something to do in background, then do something (parallel) and after that wait the child process to end, solution could be something like:

Code:
child()
{
  parentfile=$1

  do_something
  stat=$?

  echo "mypid=$$
           mystat=$stat" > $parentfile
}


#########
# MAIN

# file to use get answer from child process
childfile=$$.child.txt

# start child
child $childfile >/dev/null 2>&1  &
# save child process PID
CHILDPID=$!

do_something

# wait child process to end
wait $CHILDPID

# source childfile answer
. $childfile
# and destroy it
rm -f $childfile 2>/dev/null 

# use values
echo "child pid=$mypid"
echo "stat=$mystat"

Other method is to use event methods to communicate between process (trap + kill). Use file to move values between process. I like more event methods. There are not any shared variables. Of course you can use also named pipes between process. Source file is so easy.
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

background process return code

Hi I have the following piece of code that is calling another child process archive.ksh in the background while read file; do file_name=`ls $file`; ksh archive.ksh $file_name &; done < $indirect_file The problem is, indirect_file may contain anwhere from 2 to 20 different... (5 Replies)
Discussion started by: Vikas Sood
5 Replies

2. Shell Programming and Scripting

How to include RETURN KEY with Background process "&" in Shell Script

Hello All, I am a newbie in Shell script programming, and maybe you can help me with my query. I need to write a shell script (mntServer.ksh) that will start a background process and also to be able to run another script. The mntServer.ksh script contains: #!/bin/ksh... (1 Reply)
Discussion started by: racbern
1 Replies

3. Shell Programming and Scripting

Return code of background process

Hi, I have a process that I run in the background that looks like this ${BASEDIR}/ksh/sqler.ksh ${compnames003} & and I would like to get the return code of the sqler.ksh script. so my code is like this ${BASEDIR}/ksh/sqler.ksh ${compnames003} & retcode=$? (3 Replies)
Discussion started by: c19h28O2
3 Replies

4. Programming

C function to start process but to return right away

Hello, I am using C on a Centos box with gcc as the compiler. I want a function to do something, them make an http request to some server (most probably using curl but suggestions are welcome) and return right away without waiting for the server's answer on that request. What should I use... (8 Replies)
Discussion started by: JCR
8 Replies

5. Shell Programming and Scripting

How to put FTP process as a background process/job in perl?

Hi, I am using net::ftp for transferring files now i am trying in the same Linux server as a result ftp is very fast but if the server is other location (remote) then the file transferred will be time consuming. So i want try putting FTP part as a background process. I am unaware how to do... (5 Replies)
Discussion started by: vanitham
5 Replies

6. Shell Programming and Scripting

Background process, return code and pid.

Hey all, Okay, this one is tricky and I'm not sure there is a niec way to do it, or indeed anyway to do it. The main issue revolves around timing out a hung ssh. I am doing this by creating a wrapper script for the ssh with the following requirements. My requirements are: Defineable... (5 Replies)
Discussion started by: RECrerar
5 Replies

7. Shell Programming and Scripting

Capturing the return code from background process

Hi All, I was out not working on unix from quite sometime and came back recently. I would really appreciate a help on one of the issue I am facing.... I am trying to kick off the CodeNameProcess.sh in PARALLEL for all the available codes. The script runs fine in parallel. Let say there are... (1 Reply)
Discussion started by: rkumar28
1 Replies

8. Shell Programming and Scripting

How to return from background process and check if it is running or not?

Hi Team, i am executing 3 scripts in background from 1 script and i want to send a message once the script gets completed.these scripts usually takes 1 hr to complete. My sample script is below, Vi abc.sh sh /opt/data/Split_1.sh & sh /opt/data/Split_2.sh & sh /opt/data/Split_3.sh & ... (3 Replies)
Discussion started by: raju2016
3 Replies

9. Shell Programming and Scripting

Return: can only `return' from a function or sourced script

Not sure where the problem is. I can run the script without any issue using the following command. . /opt/app/scripts/cdc_migration.sh But it fails with the below error when I try it this way /opt/app/scripts/cdc_migration.sh /opt/app/scripts/cdc_migration.sh: line 65: return: can only... (1 Reply)
Discussion started by: svajhala
1 Replies

10. Shell Programming and Scripting

Function - Make your function return an exit status

Hi All, Good Day, seeking for your assistance on how to not perform my 2nd, 3rd,4th etc.. function if my 1st function is in else condition. #Body function1() { if then echo "exist" else echo "not exist" } #if not exist in function1 my all other function will not proceed.... (4 Replies)
Discussion started by: meister29
4 Replies
wait.h(3HEAD)							      Headers							     wait.h(3HEAD)

NAME
wait.h, wait - wait status SYNOPSIS
#include <sys/wait.h> DESCRIPTION
When a process waits for status from its children using either the wait(3C) or waitpid(3C) function, the status returned can be evaluated with the following macros, defined in <sys/wait.h>. These macros evaluate to integral expressions. The stat argument to these macros is the integer value returned from wait() or waitpid(). WCOREDUMP(stat) If the value of WIFSIGNALED (stat) is non-zero, this macro evaluates to a non-zero value if a core image of the terminated child was created. WEXITSTATUS(stat) If the value of WIFEXITED(stat) is non-zero, this macro evaluates to the exit code that the child process passed to _exit() (see exit(2)) or exit(3C), or the value that the child process returned from main. WIFCONTINUED(stat) Evaluates to a non-zero value if status was returned for a child process that has continued. WIFEXITED(stat) Evaluates to a non-zero value if status was returned for a child process that terminated normally. WIFSIGNALED(stat) Evaluates to a non-zero value if status was returned for a child process that terminated due to the receipt of a signal. WIFSTOPPED(stat) Evaluates to a non-zero value if status was returned for a child process that is currently stopped. WSTOPSIG(stat) If the value of WIFSTOPPED(stat) is non-zero, this macro evaluates to the number of the signal that caused the child process to stop. WTERMSIG(stat) If the value of WIFSIGNALED(stat) is non-zero, this macro evaluates to the number of the signal that caused the termination of the child process. The <sys/wait.h> header defines the symbolic constants listed below for use with waitpid(3C). WNOHANG Do not hang if no status is available; return immediately. WUNTRACED Report status of stopped child process. The symbolic constants listed below are defined as possible values for the options argument to waitid(2). WEXITED Wait for processes that have exited. WSTOPPED Status is returned for any child that has stopped upon receipt of a signal. WCONTINUED Status is returned for any child that was stopped and has been continued. WNOHANG Return immediately if there are no children to wait for. WNOWAIT Keep the process whose status is returned in infop in a waitable state. The type idtype_t is defined as an enumeration type whose possible values include the following: P_ALL P_PID P_PGID The id_t and pid_t types are defined as described in <sys/types.h>. The siginfo_t type is defined as described in <signal.h>. The rusage structure is defined as described in <sys/resource.h>. Inclusion of the <sys/wait.h> header can also make visible all symbols from <signal.h> and <sys/resource.h>. ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Interface Stability |Standard | +-----------------------------+-----------------------------+ SEE ALSO
exit(2), waitid(2), exit(3C), wait(3C), waitpid(3C),attributes(5), standards(5) SunOS 5.10 10 Sep 2004 wait.h(3HEAD)
All times are GMT -4. The time now is 10:18 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy