Sponsored Content
Full Discussion: c++ calling main() function
Top Forums Programming c++ calling main() function Post 33888 by Perderabo on Wednesday 22nd of January 2003 07:28:46 PM
Old 01-22-2003
That would just be more of the same. Anything with the potential to result in an unlimited depth of function calls will eventually exhaust resources or consume far too many resources.

Ideally the each function should simply return when they are done. And the main function should simply have a loop that displays the menu and calls the proper function. This is the structured way and it's the only way I program.

But lots of people disagree with me (including such people as Richard Stevens and Dennis Ritchie). So I should tell you that there is also setjmp()/longjmp(). You call setjmp at some point in your program...like just before you print the main menu. Later, even in some other function, you call longjmp. And then the next thing that happens is that you're back right after the setjmp and stack pointer is magically unwound as well. This will not leak memory.

A third technique is to re-exec the program. I think that this is pathetic and here I can claim broad support.
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Calling subscript but sleep halts the main script

Ok, I have written a main script which checks a directory contents every 30 secs then sleeps. The subscript does a usermod, if the user is logged on, it sleeps for 30 secs and then trys again over and over again. Here's the problem. when the subscript is called ./subscript.sh or exec... (1 Reply)
Discussion started by: doublejz
1 Replies

2. Programming

Return value (int) from main to calling shell

What is the sytax to return an int from C program main back to calling shell? #!/usr/bin/ksh typeset -i NO_RECS $NO_RECS=process_file # Process file is a C program that is set up to return an int from main. The #program complies with no issues, but an error is generated when the... (3 Replies)
Discussion started by: flounder
3 Replies

3. Programming

main function

Is it possible to execute any function before main() function in C or C++. (6 Replies)
Discussion started by: arun.viswanath
6 Replies

4. Shell Programming and Scripting

Return a value from called function to the calling function

I have two scripts. script1.sh looks -------------------------------- #!/bin/bash display() { echo "Welcome to Unix" } display ----------------------------- Script2.sh #!/bin/bash sh script1.sh //simply calling script1.sh ------------------------------ (1 Reply)
Discussion started by: mvictorvijayan
1 Replies

5. Shell Programming and Scripting

SHELL SCRIPT Function Calling Another Function Please Help...

This is my function which is creating three variables based on counter & writing these variable to database by calling another function writeRecord but only one record is getting wrote in DB.... Please advise ASAP...:confused: function InsertFtg { FTGSTR="" echo "Saurabh is GREAT $#" let... (2 Replies)
Discussion started by: omkar.sonawane
2 Replies

6. UNIX for Dummies Questions & Answers

calling process and going back to the main loop

hi everyone , i want to read an option and depending on the option call the program .For ex #! /bin/ksh export JAVA_HOME=/home/oracle/jdk1.6.0_20 echo " Please enter mod-modeler, dev - sqldeveloper" read choice if ; then echo ' SQL DEVELOPER IS STARTING NOW ... ' cd... (0 Replies)
Discussion started by: kdev
0 Replies

7. Shell Programming and Scripting

main program is not calling small other programs

I am trying to understand a program in a book and this program suppose to call other programs which are in the same folder, the other programs are called 'lu' and 'add' but for some reason when it gets to the last line of each case to call these programs there is an error message saying ./rolo:... (2 Replies)
Discussion started by: bartsimpsong
2 Replies

8. Programming

Function main returning int?

H friends, As we know, a function returns a value and that value is saved somwhere. like int Sum( int x, int y ) { return x + y; } Total = Sum( 10, 20 ); The value 30 is saved in variable Total. Now the question is, what int value does the function main return, and where is it... (5 Replies)
Discussion started by: gabam
5 Replies

9. AIX

Calling functions from main program from dlopened library function

Hello All, I am trying to call a function from the calling main program from a dlopened library function, below is the entire code, when I execute it it crashes with sigill. Can you guys help me out I guess I am missing out on the linker flag or something here. besides I am new to AIX and... (1 Reply)
Discussion started by: syedtoah
1 Replies

10. Shell Programming and Scripting

Help to Modify File Name in each function before calling another function.

I have a script which does gunzip, zip and untar. Input to the script is file name and file directory (where file is located) I am reading the input parameters as follows: FILENAME=$1 FILEDIR=$2 I have created 3 functions that are as follows: 1) gunzip file 2) unzip file... (2 Replies)
Discussion started by: pinnacle
2 Replies
setjmp(3)						     Library Functions Manual							 setjmp(3)

NAME
setjmp, _setjmp, longjmp, _longjmp - Saves and restores the current execution context LIBRARY
Standard C Library (libc.a, libc.so) System V Library (libsys5.a, libsys5.so) SYNOPSIS
#include <setjmp.h> int setjmp( jmp_buf environment); void longjmp( jmp_buf environment, int value); int _setjmp ( jmp_buf environment); void _longjmp( jmp_buf environment, int value); STANDARDS
Interfaces documented on this reference page conform to industry standards as follows: setjmp(), longjmp(): XSH4.2 _setjmp(), _longjmp(): XSH4.2 Refer to the standards(5) reference page for more information about industry standards and associated tags. PARAMETERS
Specifies an address for a jmp_buf structure. Specifies the value you want written to the execution context as the return value of the setjmp() or _setjmp() function. If you specify 0 (zero) in this parameter, the execution context contains a value of 1 as the setjmp() or _setjmp() return value. See the RETURN VALUES section for more information. DESCRIPTION
The setjmp() and longjmp() functions are useful when handling errors and interrupts encountered in low-level functions of a program. The setjmp() function saves the current stack context and signal mask in the buffer specified by the environment parameter. You then use the buffer in a later call to the longjmp() function. The longjmp() function restores the stack context and signal mask that were saved by the setjmp() function. After the longjmp() function runs, program execution continues as though the corresponding call to the setjmp() function had just returned the value of the value parameter. The function that called the setjmp() function must not have returned before the completion of the longjmp() function. The _setjmp() and _longjmp() functions operate identically to the setjmp() and longjmp() functions, respectively, except that _setjmp() and _longjmp() manipulate only the stack context. These functions do not restore the signal mask. All accessible objects have values at the time longjmp() is called, except for some objects of automatic storage duration. Objects of automatic storage duration will have indeterminant values if they meet all of the following conditions: They are local to the function con- taining the corresponding setjmp() invocation. They do not have volatile-qualified type. They are changed between the setjmp() and the longjmp() call. Because it bypasses the usual function call and return mechanisms, the longjmp() function executes correctly in contexts of interrupts, signals, and any of their associated functions. However, if the longjmp() function is invoked from a nested signal handler (that is, from a function invoked as a result of a signal raised during the handling of another signal), the behavior is undefined. NOTES
[Tru64 UNIX] For compatibility, the System V versions of the setjmp() and longjmp() functions, which are equivalent to _setjmp() and _longjmp(), respectively, are also supported. To use the System V versions of setjmp() and longjmp(), you must link with the libsys5 library before you link with libc. CAUTION
The results of the longjmp() function are undefined in the following situations: The longjmp() function is called with an environment parameter that was not previously set by the setjmp() function. The function that made the corresponding call to the setjmp() function has already returned. If the longjmp() function detects one of these conditions, it calls the longjmperror() function. If longjmperror() returns, the program is aborted. The default version of longjmperror() displays an error message to standard error and returns. If you want your program to exit more gracefully, you can write your own version of the longjmperror() program. RETURN VALUES
After the longjmp() function is finished executing, program execution continues as though the corresponding call of the setjmp() function just returned. In other words, the execution context saved by the corresponding setjmp() function is in place and execution continues at the statement immediately following the call to the setjmp() function. Part of that execution context is the return value from the setjmp() function. When the setjmp() function actually returns (before the call to the longjmp() function), that return value is 0 (zero). When the longjmp() function returns, the execution context contains a non-zero value as the return value from the setjmp() function. The value you specify in the value parameter to the longjmp() function is written to the execution context as the return value for the setjmp() function. You cannot cause the execution context to contain a 0 (zero) value for the setjmp() return value. If you specify 0 in the value parameter, the execution context contains a 1 as the setjmp() return value. RELATED INFORMATION
Routines: siglongjmp(3), sigsetjmp(3) Standards: standards(5) delim off setjmp(3)
All times are GMT -4. The time now is 05:14 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy