You've been around long enough not to post homework questions, so I'll answer: use setjmp() and longjmp(). Basically, the first call saves the current stack configuration (stack pointer, parent caller address, etc). The second call restores that stack configuration. So you might have some code like this:
I'm using the UNIX csh and i wish to use recursion to nav my way up (or down as it is) a given folder.
My little test script is called "r" and takes a folder as argv (or $1)
#!/bin/tcsh -f
set allFiles = `ls -A $argv`
cd $argv
while ($#allFiles)
if (-d... (1 Reply)
I am running a korn shell script which has a recursive function.
The script ran for 117 iterations and ended up with the following error
"recursion too deep".
what should be done to avert this?
Thanks in advance
Swamy
p.s. I am on UNIX MPRAS V4 (3 Replies)
Hello every body. I am trying to find the factorial using the following code. But it is giving the syntax error. I tried very much but in vain. Thanks in advance for helping me
factorial()
{
if
then
y=`expr $1 - 1`
x=$(( $1 \* factorial $y ))... (6 Replies)
Hi Guys,,
I tried to create a recursive function in unix.
The following is the code.
#/bin/sh
function(){
n=$1;
if ; then
out=1;
echo "inside if for 0";
else
out = `$n * function "$n-1"`;
echo "inside if for $n-1;
fi (3 Replies)
Hi,
Question: how come the output is like that? Can explain to me abit. I am learning C.
Thanks!
#include <stdio.h>
#include <string.h>
void printit(char line_of_char, int index);
int main()
{
char line_of_char;
int index = -1;
strcpy(line_of_char, "This is a string.");
... (5 Replies)
Can someone please explain me why the following script calls it self recursively:
#!/bin/bash
echo Called
$0
while this not:
#!/bin/bash
echo Called
$($0)
Thanks (6 Replies)
In the following command:
find / -ctime +3 -exec rm -R {}\;
how is the recursion list built for the actual rm ?
F'rinstance; I had a case where a user typed this as root using '/' instead of '.' so everything in the root level was going to be traversed. They hit <ctrl>C before too much was... (5 Replies)
Not sure how to ask this question. I want concatenate strings and variable recursively into new variable. For example:
infile01=/dir/subfolder/file01.txt
infile02=/dir/subfolder/file02.txt
infile03=/dir/subfolder/file03.txt
for i in {01..03}
do
u=${"infile"$i}
echo $u
doneI got error... (7 Replies)
Hi,
I am trying to disable the recursion on DNS server (Solaris 10). I have added the lines in the named.conf as below:
allow-query-cache { none; };
recursion no;
Then restarted the solaris DNS services
svcadm refresh svc:/network/dns/server:default
Still I am able to... (0 Replies)
Hi,
I cannot find a way to copy a directory to another location with all attributes (mode, ownership, timestamps) but withOUT recursion (after so many years of working with Linux).
Say I want to create /home/jail/tmp exactly like /tmp but with nothing in it. Here is what I tried:
... (7 Replies)
Discussion started by: chebarbudo
7 Replies
LEARN ABOUT ULTRIX
setjmp
setjmp(3) Library Functions Manual setjmp(3)Name
setjmp, longjmp - non-local goto
Syntax
#include <setjmp.h>
int setjmp (env)
jmp_buf env;
void longjmp (env, val)
jmp_buf env;
int val;
Description
The and functions help deal with errors and interrupts encountered in a low-level subroutine of a program.
The function saves its stack environment in env (whose type, jmp_buf, is defined in the <setjmp.h> header file) for later use by It returns
the value 0.
The function restores the environment saved by the last call of with the corresponding env argument. After finishes, program execution
continues as if the corresponding call of (which must not itself have returned in the interim) had just returned the value val. The func-
tion cannot cause to return the value 0. If is invoked with a second argument of 0, returns 1. At the time of the second return from all
accessible data have values as of the time is called. However, global variables have the expected values. For example, those as of the
time of the
Examples
#include <setjmp.h>
jmp_buf env;
int i = 0;
main ()
{
void exit();
if(setjmp(env) != 0) {
(void) printf("value of i on 2nd return from setjmp: %d0, i);
exit(0);
}
(void) printf("value of i on 1st return from setjmp: %d0, i);
i = 1;
g();
/*NOTREACHED*/
}
g()
{
longjmp(env, 1);
/*NOTREACHED*/
}
If the a.out resulting from this C language code is run, the output is as follows:
value of i on 1st return from setjmp:0
value of i on 2nd return from setjmp:1
Unexpected behavior occurs if is called without a previous call to or when the last such call was in a function which has since returned.
Restrictions
The values of the registers on the second return from are register values at the time of the first call to not those of the Thus, variables
in a given function can produce unexpected results in the presence of depending on whether they are register or stack variables.
See Alsosignal(2).
RISC setjmp(3)