Linux Datei "/proc/rtai/RTAI names"öffen / Adresse aus Datei lesen
-
Hallo an alle,
ich habe folgendes Problem. Ich arbeite zur Zeit mit RTAI, dort starte ich eines Task (Datentype RT_TASK*) und einen Semaphore (Datentype SEM*). Wenn mir das Realtime Programm nun abstürzt aus welchen gründen auch immer können die Task und Sem. nicht deleted werden und sind somit noch im Systemspeicher vorhanden. Das Programm kann so lange nicht erneut aufrufen solange die Task und Sem. Laichen im Speicher sind. Um einen neustart zu vermeiden möchte ich die Adressen gerne aus "/proc/rtai/RTAI names" auslesen und dann mit der entsprechen Adresse den Task oder die Semaphore deleten.
Mein 1. Problem ist wie kann ich die Datei "/proc/rtai/RTAI names" öffnen.
....
fstream rtTaskFile;
rtTaskFile.open("/proc/rtai/RTAI names", ios::in );
if( !rtTaskFile.fail() )
{
cout<<"Can't open /proc/rtai/RTAI names. The modules not loaded may be"<<endl;
exit(99);
}
....mit dem Code geht das nämlich nicht. Was mir aufgefallen ist wenn ich in /proc/rtai ls -al mach bekomme ich
#/proc/rtai # ls -al
total 0
dr-xr-xr-x 2 root root 0 Jan 21 15:04 .
dr-xr-xr-x 130 root root 0 Jan 20 15:18 ..
-rw-r--r-- 1 root root 0 Jan 21 15:30 RTAI names
-rw-r--r-- 1 root root 0 Jan 21 15:30 fifos
-r--r--r-- 1 root root 0 Jan 21 15:30 pqueue
-rw-r--r-- 1 root root 0 Jan 21 15:30 rtai
-rw-r--r-- 1 root root 0 Jan 21 15:30 schedulerFür die Darstellung von "RTAI names" mittels cat z.B. muss ich aber
# cat /proc/rtai/RTAI\ names
eingeben, ohne \ bekomme ich nur
# cat RTAI names
cat: RTAI: No such file or directory
cat: names: No such file or directoryWie bekomme ich die Datei auf im C++ Prog.
Meine 2. Frage:
Wie bekomme ich die Adresse (RT_HANDLER) als aus dem aus der Datei, so das ich nach dem Auslesen dieser Entsprechend dem Type TASK oder SEM die Adresse casten kann, um den Task oder die Semaphore zu deleten.
RTAI LXRT Information.
MAX_SLOTS = 100
Linux_Owner Parent PID
Slot Name ID Type RT_Handle Pointer Tsk_PID MEM_Sz USG Cnt
-------------------------------------------------------------------------------
1 RTGLBH 0x9ac6d9e5 SHMEM 0x00000000 0x00000000 0 131072 1
2 MASTE1 0x7d4fa250 TASK 0xd6f24040 0x00000000 0 3603 1
3 MASTER 0x7d4fa26a TASK 0xd6f21840 0x00000000 0 1644 1
4 0 0x00000001 SEM 0xd6f220c0 0xcfba6000 1644 0 1
5 1 0x00000002 SEM 0xd6f220e0 0xcfba6000 1644 0 1Danke im voraus
Martin
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Linux/Unix verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.