我需要创建一个与另一个文件夹具有相同权限的新文件夹.我的最终目标是完全复制目录及其内容.这是我的第一步,我似乎无法让它工作.
我的内容如下:
struct stat srcstat;
int srcstatus = stat(source, &srcstat);
if (chdir(dest))
if (mkdir(dest, srcstat.st_mode)){
printf("error: could not create <dest>\n");
exit(1);
}
Run Code Online (Sandbox Code Playgroud)
source是一个cstring,其中包含我想要使用其权限的文件夹的路径.dest是带有新文件夹路径的ac字符串.
具有旧文件夹和新文件夹权限的ls如下所示
drwxrwxrwx 2 kingacev CS-Majors 4096 Apr 18 17:03 test
drwxr-xr-x 2 kingacev CS-Majors 4096 Apr 18 18:12 test3
Run Code Online (Sandbox Code Playgroud)
我的第一个想法是我不能以我正在尝试的方式使用srcstat.st_mode.如果是这样的话,是否有同样简单的方法来做我想做的事情?如果没有,我离这个标记有多远?
我的任务是编写一个简单的linux shell。我正在使用外部命令。我们需要使用execv。
for (int i = 0; i < count; i++){
char path[1024];
strcpy(path, PATHS[i]); // PATHS is an array of cstrings, the paths in $PATH
strcat(path, "/");
strcat(path, command[0]); // command and commands are essentially the same
printf("%d %s",i,path); // they are essentially argv[]
if (!execv(path, commands)) // for ls -l $HOME
break; // commands[0] = ls [1] = -l [2] = my home dir
Run Code Online (Sandbox Code Playgroud)
现在我只用ls进行测试。ls完全按照应有的方式运行,但是execv成功后,程序立即关闭。有什么办法可以让我继续使用execv检查正确的路径,并让程序在execv成功后继续运行?
我目前的疑问是
$sql="SELECT * FROM events, times
WHERE events.email = '$email'
and
events.type = times.type";
Run Code Online (Sandbox Code Playgroud)
events.date是形式为yyyy-mm-dd的sql中的日期
times.time是sql中相同形式的日期,但是0000-mm-dd.
我希望我的查询中有一个额外的列,其中包含一个事件的建议开始日期.
即.events.date - times.time
我可以让sql返回包含推荐开始日期的额外列吗?
还是我离开了标记?
任何想法都表示赞赏.
编辑:
这就是我现在拥有的:
SELECT *, date_diff(events.date, times.time) AS recommended FROM events, times WHERE events.email = '$email' and events.type = times.type ORDER by events.date
Run Code Online (Sandbox Code Playgroud)
从我可以告诉它不应该失败,但确实如此.它抱怨我的语法.
编辑:
它现在正在工作,谢谢
这就是我所拥有的
$sql="SELECT *, date_format(events.date - times.time, '%Y-%m-%d') as recommended
FROM events, times
WHERE events.email = '$email'
and
events.type = times.type ORDER by events.date";
Run Code Online (Sandbox Code Playgroud)