2013-04-14 1 views
0
#include<stdio.h> 
#include<unistd.h> 
#include<string.h> 
#define MAXLINIE 100 


main(int argc, char* argv[]) { 
    if (fork()==0){ 

     execl("/bin/> temporar.txt", "/bin/> temporar.txt", ">temporar.txt", NULL); 

    } 
} 

Fondamentalement, ce que je suis en train de faire est de créer un fichier en utilisant un processus unix, voici mon code, mais pour une raison quelconque, il ne fonctionne pas, Je ne comprends pas vraiment la commande execl et pourquoi les deux premiers paramètres doivent être les mêmes: execl("/bin/ls", "/bin/ls", "-l", NULL); cela fonctionne bien, quelqu'un pourrait-il m'aider?Comment créer un fichier en utilisant la commande execl dans c

Merci beaucoup!

+0

Quelle est l'idée derrière ' "/ bin /> temporar.txt"'? – alk

+0

Le dernier paramètre doit être '(char *) NULL', pas' NULL'. – alk

+0

Tous ces paramètres seront passés en arguments variés, ayant le type 'void *'. Quoi qu'il en soit, C accepte une sorte de conversion implicite, donc 'NULL' est OK même pour' char * '. – loentar

Répondre

2

Tenir compte du système d'utilisation() à la place:

system("/bin/ls -l > temporar.txt"); 

Ou à l'aide execl appeler /bin/sh pour rediriger flux:

execl("/bin/sh", "/bin/sh", "-c" , "/bin/ls -l >temporar.txt", NULL); 

Le premier paramètre de execl est une commande à exécuter, la deuxième est un premier paramètre à être passé à la commande (argv [0]), troisième et suivant - autres arguments argv [1] ...

+1

Je ne suis pas autorisé à utiliser le système, je dois créer moi-même le processus, je ne veux pas tous les "ls -l", seulement pour créer le fichier – JackRobinson

+0

Je reçois " Pas un tel fichier ou répertoire "erreur quand je l'exécute comme ceci" execl ("/ bin/sh", "/ bin/sh", "/bin/>temporar.txt", NULL); " parce que je veux seulement créer un fichier dans le dossier d'où je lance la source c, le ls-l était un exemple qui a fonctionné et j'ai essayé de l'adapter à mon problème – JackRobinson

+0

Désolé, j'ai oublié de passer le drapeau -c – loentar

Questions connexes