Esiste una funzione (o un'interfaccia, ioctl, netlink ecc.) Nelle librerie Linux standard che restituiranno i montaggi correnti direttamente dal kernel senza analizzare/proc? strace
il comando mount, sembra che analizzi i file in/procFunzione Linux per ottenere punti di montaggio
risposta
Non ci sono syscall per elencare queste informazioni; invece, è possibile trovarlo nel file /etc/mtab
mtab è solo un collegamento simbolico a/proc/monta sulla maggior parte dei sistemi. – tMC
link simbolico o hard link? Ricordo che ai vecchi tempi mtab non era affidabile ... –
@tMC: '/ proc/mounts' è un dettaglio di implementazione. '/ etc/mtab' è un file standard che troverai su quasi tutti i sistemi di tipo Unix. Non ho controllato, ma penso che sia parte dello standard. Quindi puoi fare affidamento su di esso. E non direi "sulla maggior parte dei sistemi". Nei miei sistemi Ubuntu e OpenSuSE, è un file semplice. Ho '/ proc/mounts', ma è un collegamento :-) –
C'è qualche ragione per cui non si utilizzerebbe la chiamata alla libreria libc getmntent
? Mi rendo conto che non è la stessa cosa di una chiamata di sistema "tutto in uno", ma dovrebbe consentire di ottenere le informazioni rilevanti.
#include <stdio.h>
#include <stdlib.h>
#include <mntent.h>
int main(void)
{
struct mntent *ent;
FILE *aFile;
aFile = setmntent("/proc/mounts", "r");
if (aFile == NULL) {
perror("setmntent");
exit(1);
}
while (NULL != (ent = getmntent(aFile))) {
printf("%s %s\n", ent->mnt_fsname, ent->mnt_dir);
}
endmntent(aFile);
}
Ho un sistema incorporato che potrebbe aver fatto uso di queste informazioni durante l'avvio; prima/proc è stato montato. – tMC
Sia 'df' che' mount' usano '/ proc/self/mountinfo' invece di'/proc/mounts', ma il risultato è lo stesso. –
Ricorda che 'getmntent' non è thread-safe. C'è 'getmntent_r' (estensione GNU). –
http://stackoverflow.com/questions/5095976/mount-system-call – Satish
@Satish che monta un filesystem- non restituisce mounts_ _current – tMC
Perché si vuole evitare '/ proc /'? ? sotto Linux, è il modo preferito per recuperare tali informazioni! Ed è anche molto semplice !! –