Forum: PC-Programmierung [c] Scope von mount tmpfs


von olpo (Gast)


Lesenswert?

Hallo,


ich möchte ein tmpfs laden und dort neue Dateien anlegen.

Zur Zeit geht das nicht.
1
fopen(filename, "w") // ist NULL

Das heißt ich muss tmpfs erst einmal mounten.

Die Frage ist, wo muss ich mount() ausführen, damit fopen() auf tmpfs 
zugreifen kann?
Es verwirrt mich, daß ich fopen() keinen Pointer zu meinem Filesystem 
mitgebe.

Es handelt sich hier um kein richtiges Linux-System, sondern eher eine 
BareMetal App eines eigebetteten Systems.

Ich habe also nur diese eine C-Datei.

Ist es also egal, wo ich mount() mache, oder muss das im Scope von 
fopen() sein?

Das reicht wohl nicht, oder?
1
void init(){
2
  mount("none", "tmp", "tmpfs", 0, 0);
3
}
4
5
void open(){
6
  fopen("tmp/bar");
7
}
8
9
int main(){
10
init();
11
open();
12
}

von Klaus W. (mfgkw)


Lesenswert?

olpo schrieb:
> Es handelt sich hier um kein richtiges Linux-System, sondern eher eine
> BareMetal App eines eigebetteten Systems.

Bei der Fehlerbeschreibung kein Wunder, wenn es nicht klappt....

Was hast du denn jetzt?
Überhaupt ein Betriebssystem? Ein bißchen Linux, aber eher keines?
Wenn nein: welche Umgebung hast du sonst? Kennt die sowas wie ein 
Dateisysteme?

von olpo (Gast)


Lesenswert?

Wie gesagt, es ist minimal OS (BareMetal), das halt schon sowas wie 
fopen() und mount() kann. Deshalb habe ich das erwähnt. Aber es ist kein 
Linux das von sich aus ein Dateisystem hat. Ich muss da ein tmpfs 
rein-mounten().

Nur, wie mountet man? Ist das in einem C-Programm möglich, so wie oben 
angedeutet? Oder muss die unten liegende Umgebung erst mounten und kann 
dann die App starten?

von Rolf M. (rmagnus)


Lesenswert?

olpo schrieb:
> Wie gesagt, es ist minimal OS (BareMetal),

Was auch immer das heißt.

> Nur, wie mountet man? Ist das in einem C-Programm möglich, so wie oben
> angedeutet? Oder muss die unten liegende Umgebung erst mounten und kann
> dann die App starten?

Woher soll denn hier jemand wissen, wie das unter dem unbekannten 
"minimal OS" gemacht wird?

von Mark B. (markbrandis)


Lesenswert?


von Rolf M. (rmagnus)


Lesenswert?

Ach so, "BareMetal" soll nicht die Beschreibung des OS sein, sondern der 
Name.

Wenn ich allerdings das lese:

> BareMetal is a 64-bit OS for x86-64 based computers. The OS is written
> entirely in Assembly while applications can be written in Assembly or
> C/C++.

frage ich mich irgendwie, wozu man sowas braucht.

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.