Sponsored Content
Top Forums Programming Python Conditional Statements Based on Success of Last Command Post 302867715 by alister on Thursday 24th of October 2013 08:05:00 PM
Old 10-24-2013
Hi, wisecracker.

From the python os.system documentation:
Code:
On Unix, the return value is the exit status of the process encoded in the format specified for wait().

You should read the man page for the wait(2) system call. The integer returned, (32512 above) encodes more information than just the value passed to the exit system call. There are macros that are used to extract the actual value passed to exit(). Python's os module provides access to those macros. The two most relevant to your post:
Code:
os.WIFEXITED(status)

    Return True if the process exited using the exit(2) system call, otherwise return False.

    Availability: Unix.

os.WEXITSTATUS(status)

    If WIFEXITED(status) is true, return the integer parameter to the exit(2) system call.
    Otherwise, the return value is meaningless.

    Availability: Unix.

Those excerpts are from Python Standard Library - 16.1 - os.

To summarize, you cannot directly read the integer returned by wait(2) (which is the return value of os.system on UNIX). Also, you should not use bit shifting and/or masking to extract the relevant status bits because the encoding is allowed to differ between system implementations.

Regards,
Alister

Last edited by alister; 10-24-2013 at 09:15 PM..
This User Gave Thanks to alister For This Post:
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Conditional Statements

How can I compare two decimal values within a function using Bash? Function fun2 isn't comparing the decimal values. Is there a way to do this using Bash or Korn? #!/bin/bash set -x x=1 z=110 function fun1() { i=`bc << EOF 2>> /dev/null scale=3 ... (1 Reply)
Discussion started by: cstovall
1 Replies

2. UNIX for Dummies Questions & Answers

Success status of mailx command

Hi I want to know if the email address in the mailx exists or not Eg: Mailx -s "Subj" hello@ab.com How do I know if the email address is a valid one??? (4 Replies)
Discussion started by: superprogrammer
4 Replies

3. Shell Programming and Scripting

for i loop with conditional statements?

New to scripting in general, so patience plz. If I ask a stupid question or don't get it, I thank you for your kindness in advance. That said, did a for i loops checks to see if a PB* file is there but I need to know two things before I copy the file. I need to know if the file's create date... (2 Replies)
Discussion started by: xgringo
2 Replies

4. Programming

Conditional Compilation based on Environmental Variable in Unix

I want to be able to access an environment variable to control how a program is compiled. So: export MY_VERSN=9 Then ideally, within my C++ code, I would have #if MY_VERSN = 9 iret = FRED9() #else iret = FRED() #endif The way I thought I could do it is that in the script that... (2 Replies)
Discussion started by: BrighterLater
2 Replies

5. Shell Programming and Scripting

Python script - control flow statements

Hi guys.I'm just beginner of python. I'm just trying to do some analysis on simple input file. it has 6 columns and i want to consider k,l and m,n if i and j are + after that checking which value is greater or lower in k,l and m,n I have included logic header just to explain what I was... (4 Replies)
Discussion started by: repinementer
4 Replies

6. Shell Programming and Scripting

How to use awk or nawk by using Conditional Statements

Hi Guys! Anybody know how can I use a nawk or awk on a script and printing the NAME, SECTION (must be 410 or 411 or 414) and TOTAL COST of CLASS 1 and 3 combined must be greater than 50. See below desired output file. input.txt: NAME,CLASS,COST,SECTION JOHN,1,10,410 JOHN,2,20,410... (2 Replies)
Discussion started by: pinpe
2 Replies

7. UNIX for Dummies Questions & Answers

Conditional execution of statements

Hi , I have a script which has multiple awk and sed commands like below. First one :- find /root/src/ -name "*csv" -size 0 -exec rm {} \; Second one: - ls *SRE*.txt > SRT_TRAN.dat rm *asr*.txt Third one :- find /root/src/ -name '*.csv' | while read FILENAME ; do awk... (2 Replies)
Discussion started by: shruthidwh
2 Replies

8. UNIX for Dummies Questions & Answers

Check Success Status Of sed command

How do i check success status of a sed command execution i have the below script not sure if it is right approach to check status of execution using a function. Also it looks like in the below sed command even if the search string doesn't exist in the file it is returning status as success as i... (6 Replies)
Discussion started by: Ariean
6 Replies

9. Shell Programming and Scripting

Executes scripts parallelly based on their success

Hi Team , I have one Master.sh file which call X,Y,Z scripts , but here X may call again some sub scripts X_sub1.sh , X_sub2.sh Y calls Y_sub1.sh,Y_sub2.sh and similarly Z script also . Now requirement is Both X and Y should execute parallel bcz X and Y are independent... (9 Replies)
Discussion started by: chandini
9 Replies

10. Shell Programming and Scripting

Conditional deletion of files based on extension

Hello All, I have some files like file, file.chk, file.sem and file.temp in huge. I would like to delete some files based on following criteria. 1. Unconditionally delete .sem and .temp files 2. If we found the actual file, don't remove .chk file, otherwise remove .chk file as well for... (5 Replies)
Discussion started by: VasuKukkapalli
5 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 04:54 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy