如何使用exec在文件上实现chmod命令?如果有人能为我提供代码,我将不胜感激。
答案 0 :(得分:1)
从C代码开始,直接调用chmod(2)几乎肯定是比完成fork()ing和exec()的整个麻烦更好的选择。
不可否认,大多数麻烦都是fork()部分,如果你的程序在exec()调用之后不需要做任何其他事情,那么只运行一个exec()系列函数而不用分叉是相当不错的(对于使用exec()的练习,即)。
答案 1 :(得分:1)
我不会向你展示一个工作模型,但是execve()的工作原理如下:
char *args[] = {"foo", "argument1", "argument2", (char *)NULL};
...处理分叉......
res = execve("/sbin/foo", args, (char *)NULL);
...处理execve()失败....
execve()的第三个参数留给读者研究的练习,NULL可能适合或不适合你的作业。此外,由您自行决定res
应该是什么类型以及它在成功时应该具有什么等级。注意转换为NULL。
single UNIX specification通常是一个很好的起点。
答案 2 :(得分:0)
试试这个:http://support.sas.com/documentation/onlinedoc/sasc/doc/lr2/execve.htm 另见:http://linux.about.com/library/cmd/blcmdl3_execvp.htm
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
main()
{
pid_t pid;
char *parmList[] = {"/bin/chmod", "0700", "/home/op/biaoaai/bead",NULL};
if ((pid = fork()) ==-1) //fork failed
perror("fork error");
else if (pid == 0) { //child (pid==0 if child)
execvp("chmod", parmList);
printf("Return not expected. Must be an execve error.n");
} else { //parent (pid==child process)
//parent specific code goes here
}
}
编辑:我从未实际编译过......使用paramList的用户进行了更新。