[c] Scope von mount tmpfs

Gast #3843889
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
}
#3843899
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?
Gast #3844057
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?
#3844267
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?
#3844587
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren