我正在编写命令find in c,当我想在文件上使用exec时我被阻止。
如果它是一个剧目很简单,我只是使用chdir(路径),但在文件中我有错误而不是目录所以我不能使用exec
这就是我所拥有的
if (chdir(resultat[i])==-1){
perror("erreur changement de repertoire\n");
exit(1);
}
execl("/bin/ls","ls",(char *)0);
resultat [i]是我文件的路径
感谢您的帮助
答案 0 :(得分:1)
(我不确定你要做什么,我不知道你的其余代码在做什么,所以这只是在黑暗中拍摄的......) < / p>
您是否考虑将resultat[i]
作为参数传递给ls
? ls
可能会自行完成The Right Thing(TM)。即替换您提供的代码段:
execl("/bin/ls","ls", resultat[i], (char *)0);
我认为您已经完成了所有必要的工作(例如fork()
),以避免您的申请在exec()
电话中过早终止...
答案 1 :(得分:0)
我认为这是Linux(ls是linux只有哈哈),所以首先尝试使用opendir并查看是否获得了有效的句柄,然后尝试从中读取一个文件。如果你得到一个有效的文件名,你可以检查它是否是一个文件......