Forum: PC-Programmierung taskset Rückgabewert in Shellvariable


von Thomas F. (thomas-hn) Benutzerseite


Lesenswert?

Hallo,

wie bekomme ich denn unter Linux den Rückgabewert (Job-Number & PID) von 
taskset in eine Shellvariable?
Sowas wie foo=`taskset -c 0 echo "Test" &` funktioniert leider nicht, da 
ich dann nur die Ausgabe von echo in der Variable habe, nicht aber die 
Job-Number und PID in der Form "[3] 11502".
Liegt das Problem evtl. darin, dass mir zwar der gesuchte Wert in die 
Variable geschrieben wird, anschließend aber gleich durch "Test" 
überschrieben wird?

Wenn ich z.B. "taskset -c 0 sleep 1 &" ausführe, werden mir die beiden 
gesuchten Werte angezeigt.

Viele Grüße,

Thomas

von Tom (Gast)


Lesenswert?

Das klingt danach, als ob "[3] 11502" nach stderr geschrieben wird. Das 
` ` nimmt aber nur Werte aus stdout, will man Werte aus stderr, muss man 
umleiten: http://www.cyberciti.biz/faq/redirecting-stderr-to-stdout/

Beispiel:
foo=`ls gibtesnicht.txt`
echo "foo = $foo"
bar=`ls gibtesnicht.txt  2>&1`
echo "bar = $bar"

Wie man das mit taskset verbindet, muss jemand anderes herausfinden, 
auch für den Rest keine Gewähr, ich habe hier gerade kein richtiges OS 
zur Hand.

Grüße

von Rolf Magnus (Gast)


Lesenswert?

Das "[3] 11502" hat erstmal überhaupt nichts mit dem Rückgabewert zu 
tun.

Tom schrieb:
> Das klingt danach, als ob "[3] 11502" nach stderr geschrieben wird.

Es wird nicht vom aufgerufenen Programm, sondern von der Shell, von der 
aus es aufgerufen wurde, rausgeschrieben. Daher wird das nichts bringen.

von Tom K. (ez81)


Lesenswert?

Asche auf mein Haupt.

Mit $! bekommt man immerhin die PID des Prozesses:
1
#!/bin/bash
2
taskset -c 0 sleep 10 &
3
pid_sleep=$!
4
echo "pid von sleep ist $pid_sleep, vergl. mit:"
5
ps | grep sleep

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.