Comment faire pour supprimer complètement la suppression) d'un fichier à l'aide d'un programme C, sans l'aide d'enlever le système d'appel?
J'ai été curieux de voir comment rem
dans Linux travaille et essaie d'écrire ma propre C
code qui peut supprimer un fichier mais quand j'ai cherché pour la réponse, j'ai seulement eu les programmes qui ont été à l'aide de remove()
appel système.
Est-il un autre moyen de le faire sans l'aide de l'appel système, comme d'écrire votre propre code pour faire le travail?
J'ai accompli de la copie du fichier à C de dépôt mais ne peut pas trouver un solution pour supprimer un fichier par l'intermédiaire de C.
Aucune raison pourquoi vous ne voulez pas utiliser la supprimer appel?
Je ne pense pas que nous pouvons atteindre cet objectif, comme la suppression d'un fichier à partir de la mémoire (c'est à dire sur le disque dur) est aussi simple que notre code est en interaction avec harwares, et pour cela, nous avons à prendre de l'utilisation de noyaux(c'est à dire les Appels Système).
Peut-être Ceci peut être utile.
Je ne pense pas que nous pouvons atteindre cet objectif, comme la suppression d'un fichier à partir de la mémoire (c'est à dire sur le disque dur) est aussi simple que notre code est en interaction avec harwares, et pour cela, nous avons à prendre de l'utilisation de noyaux(c'est à dire les Appels Système).
remove
n'est même pas un appel système.Peut-être Ceci peut être utile.
OriginalL'auteur Datta | 2013-05-15
Vous devez vous connecter pour publier un commentaire.
Si vous souhaitez supprimer un fichier, utilisez l'
fonction. Si vous voulez avoir un regard derrière les coulisses de la bibliothèque standard, vous pouvez télécharger la source de la glibc (par exemple) et ont un look à la mise en œuvre. Vous verrez qu'en fait un INTERNAL_SYSCALL seront exécutées sur le système d'exploitation linux:
(à partir de /sysdeps/unix/sysv/linux/unlinkat.c à partir de la debian eglibc-2.15 package)
Si vous souhaitez aller plus loin et même de ne pas l'utiliser syscall, vous aurez à mettre en place votre propre système de fichiers logique depuis le système de fichiers syscall donne juste une couche d'abstraction pour les différents systèmes de fichiers.
OriginalL'auteur urzeit
Les dissocier la fonction supprime le nom de fichier nom de fichier. La fonction unlink est déclarée dans le fichier d'en-tête unistd.h. Cette fonction renvoie la valeur 0 à la réussite, et -1 en cas d'erreur
Vous ne pouvez pas supprimer quoi que ce soit sans l'aide d'un système d'appel. La seule question est de savoir comment la pratique de l'appel système et sur la manière dont direct. Par exemple, vous pouvez utiliser
system()
pour exécuter lerm
de commande, mais qui utilisefork()
etexec*()
etwaitpid()
et les autres appels système dans le programme qui appellesystem()
, et larm
fin du programme d'aide à launlink()
appel système, de toute façon, car il n'y a aucun moyen de le faire sans l'aide de l'appel système, si c'est par l'intermédiaire du 'INTERNAL_SYSCALL" (un système d'interface d'appel) ou par le biais d'un autre mécanisme. Un programme ordinaire ne pouvez pas supprimer un fichier; seul le noyau.OriginalL'auteur Dayal rai
Si vous ne souhaitez pas utiliser le propre, comme d'habitude, vous pouvez ouvrir /dev/sd** et de jouer avec votre système de fichiers.
Btw, remove() n'est pas un syscall (homme 3 supprimer).
OriginalL'auteur yoones
La manière traditionnelle de supprimer un fichier est d'utiliser le unlink(2) fonction, qui est appelée à partir de retirez les(3), si le chemin est un fichier.
remove()
fonction qui fait la même chose, mais C est la norme.#include <stdio.h> ... int remove(const char *filename);
OriginalL'auteur jbr
OriginalL'auteur Sandeep_black