Shell som tar emot negativt exit status

2005-09-07 tråd Simon Johansson
Hej.

Har ett underligt problem som jag har försökt att hitta svaret på Internet
men har inte kunna komma på något sätt ännu.

Skriptet som körs startar ett C-Program som avslutas med exit -1.

När sedan skriptet försöker att skriva ut exit statusen från a.out så blir
det 255. Här nedan visar jag hur skriptet ser ut.

Skriptet test.sh:

#!/bin/ksh
./a.out

Status=$?

echo 
echo $Status

C-Programmet:

[EMAIL PROTECTED]:~/test cat simpelexit.c
  #include stdio.h
  int main()
{
printf(Hello, World.);
return -1;
}
[EMAIL PROTECTED]:~/test



Körning av test.sh:

[EMAIL PROTECTED]:~/test ./test.sh
Hello, World.
255
[EMAIL PROTECTED]:~/test

Är det någon som vet om det går att hämta ut exit status som är negativt i
shellskript. Har även provat med bash.

/Simon




Re: Shell som tar emot negativt exit status

2005-09-07 tråd Martin Leben

Simon Johansson wrote:

Skriptet som körs startar ett C-Program som avslutas med exit -1.

När sedan skriptet försöker att skriva ut exit statusen från a.out så blir
det 255. Här nedan visar jag hur skriptet ser ut.
[...]
Är det någon som vet om det går att hämta ut exit status som är negativt i
shellskript. Har även provat med bash.


Hej!

Jag har inte en direkt lösning på ditt problem, men väl ett sätt att gå 
runt det.

Tvåkomplementet av -1 i ett åttabitars tal är just 255. Funkar så här:

Dec | Tvåkomplement (8-bitar)
+
 2  |  2
 1  |  1
 0  |  0
-1  |255
-2  |254

Den talrymd som kan uttryckas i ett åtta bitars signerat tal blir då 
+127 till -128. Ett åtta bitar osignerat tal kan representera värdena 0 
till 255.


Så det du behöver göra är att räkna om det returvärde som shellet ser 
till den ursprungliga. Subtrahera 256 ifån tal som är större än 127, så 
får du det ursprungliga, signerade, värdet.


mvh,
/Martin Leben
--
Remove dashes and numbers (if any) to get my real email address.
I subscribe to the mailing lists i write to.
Please don't CC me on replies.


--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: Shell som tar emot negativt exit status

2005-09-07 tråd Karl Hammar
 Hej.
 
 Har ett underligt problem som jag har försökt att hitta svaret på Internet
 men har inte kunna komma på något sätt ännu.
 
 Skriptet som körs startar ett C-Program som avslutas med exit -1.
 
 När sedan skriptet försöker att skriva ut exit statusen från a.out så blir
 det 255. Här nedan visar jag hur skriptet ser ut.
...
 Är det någon som vet om det går att hämta ut exit status som är negativt i
 shellskript. Har även provat med bash.
 
 /Simon

exit(2) levererar bara sista byten i returvärdet och -1  0377 == 255.

  $ man exit 2/dev/null | col -b | grep -A2 ^DESCRIP
  DESCRIPTION
 The exit() function causes normal program termination and the the value
 of status  0377 is returned to the parent (see  wait(2)).   All  func-

Hälsningar,
/Karl

---
Karl HammarAspö Data   [EMAIL PROTECTED]
Lilla Aspö 2340 Nätverk
S-742 94 Östhammar0173 140 57Datorer/Utrustning
Sverige  070 511 97 84Linux/Unix konsulting
---


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]