
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <dirent.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <pwd.h>
#include <time.h>
char *getmod(mode_t mode,char *line) /*生成权限描述字符串*/
{
memset(line,0,sizeof(char)*11)
strcat(line,S_ISDIR(mode)?"d":"-")
strcat(line,(mode&S_IRWXU)&S_IRUSR?"r":"-")
strcat(line,(mode&S_IRWXU)&S_IWUSR?"w":"-")
strcat(line,(mode&S_IRWXU)&S_IXUSR?"x":"-")
strcat(line,(mode&S_IRWXG)&S_IRGRP?"r":"-")
strcat(line,(mode&S_IRWXG)&S_IWGRP?"w":"-")
strcat(line,(mode&S_IRWXG)&S_IXGRP?"x":"-")
strcat(line,(mode&S_IRWXO)&S_IROTH?"r":"-")
strcat(line,(mode&S_IRWXO)&S_IWOTH?"w":"-")
strcat(line,(mode&S_IRWXO)&S_IXOTH?"x":"-")
return line
}
char *directory(char *argv)/*从程序参数取出目录*/
{
int i
for (i=strlen(argv)-1i--i)
if (argv[i]=='/'){
argv[i+1]='\0'
break
}
return argv
}
int main(int argc,char *argv[])
{
DIR *dirp
struct dirent *dirst
struct stat finfo
char *path,fname[512],mod[11],ctm[10]
struct passwd *user=NULL
struct tm *ltm
if (argc==1) path=directory(argv[0])
else path=argv[1]
dirp=opendir(path)
if (!dirp)
{
fprintf(stderr,"ERROR\n")
exit(-1)
}
for (dirst=readdir(dirp)dirstdirst=readdir(dirp))
{
strcpy(fname,path)
lstat(strcat(strcat(fname,"/"),dirst->d_name),&finfo)
user=getpwuid(finfo.st_uid)
printf("%s\t%10s\t",getmod(finfo.st_mode,mod),user->pw_name)
printf("%10d\t%9d\t",finfo.st_ino,finfo.st_size)
ltm=localtime(&finfo.st_mtime)
strftime(ctm,9,"%b",ltm)
printf("%5s",ctm)
strftime(ctm,9,"%d",ltm)
printf("%3s",ctm)
strftime(ctm,9,"%Y",ltm)
printf("%5s\t",ctm)
printf("%s\n",dirst->d_name)
}
closedir(dirp)
return 0
}
没看懂你的需求,如果你要c语言里调用shell命令,那么你可以包含这个头文件#include <stdlib.h>然后调用这个命令:int system(const char *string);就可以了。例如system("pwd")就是调用shell命令pwd。但是你要使这个文件可以被其他用户执行,没必要那么烦啊。只要“chmod o+x 脚本名”就ok啦。实在不行你先把这个文件的拥有者改成你需要执行的用户,命令为“chown 你的用户名 脚本名”,然后再执行“chmod u+x 脚本名”就ok了。楼主给分吧
c语言可以在linux下执行。Linux下使用最广泛的C/C++编译器是GCC,大多数的Linux发行版本都默认安装,不管是开发人员还是初学者,一般都将GCC作为Linux下首选的编译工具。
GCC(GNU Compiler Collection,GNU编译器集合),是一套由 GNU 开发的编程语言编译器。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)