软连接文件的创建删除

/*demo(通过系统命令)
*实现一个对视频文件可以操作的软连接路径
*在Nginx中的HTML页面可直接访问视频文件
*目录的创建,文件的链接,文件的删除
*/

#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <sys/stat.h>  //mkdir
#include <sys/types.h>
#include <dirent.h>  //opendir
#include <unistd.h> //unlink


#define PLAY_INFO_DIR "paly"
#define EEXIST          17

int OpendirAndMkdir(const char * pathname)
{
	int ret = 0;
	DIR * mydir = NULL;
	if ((mydir = opendir(pathname)) == NULL)
	{
		ret = mkdir(pathname, 0755);
		if (ret != 0) return -1;
 
		printf("%s created sucess!/n", pathname);
	}
	else
	{
		printf("%s exist!/n", pathname);
	}
	return ret;
}

int main()
{
  int ret = -1;
  char *dirlocal = NULL;
  char mark = '/';
  char *retlink = NULL;
  char dirName[256] = {'\0'};
  char cmd[1024] = {0};
  char filepath[] =  "/home/huqin/bstr/test.264";
  
  printf("start link path\n");
  //获取链接文件
  retlink = strrchr(filepath,mark);
  printf("strrchr link file path:%s\n",retlink);
  
  snprintf(dirName, sizeof(dirName), "%s/%s", "/tmp/Nginx/html/", PLAY_INFO_DIR);
  //判断目录是否存在,不存在则创建
  OpendirAndMkdir(dirName);
  //将文件名连接到链接目录
  strcat(dirName,retlink);
  printf("strcat link path:%s\n",dirName);
  //执行软链接命令
  sprintf(cmd, "ln -s %s %s", filepath, dirName);
  ret = system(cmd);
  do
  {
    if(ret == 256)
    {
      printf("system link path:%s already exists, ret = %d.\n",dirName,ret);
      break;
    }
    if(ret != 0)
    {
          printf("system link path:%s failed, ret = %d.\n",dirName,ret);
          return -1;
    }
  }while(0);
  
  printf("finally link path:%s\n",dirName);
  
  //匹配到文件链接目录位置
  dirlocal = strstr(dirName,PLAY_INFO_DIR);
  printf("dir find play link path:%s\n",dirlocal);
  //删除链接文件
  if(( ret = unlink(dirName)) < 0)
  {
        printf("unlink errpr ret =%d !\n",ret);
  }
  printf("unlink link path:%s\n",dirName);
  return 0;
}
huqin@ubuntu:~/bstr$ ./strrch
start link path
strrchr link file path:/test.264
/tmp/paly exist!/nstrcat link path:/tmp/paly/test.264
finally link path:/tmp//paly/test.264
dir find play link path:paly/test.264
unlink link path:/tmp/paly/test.264

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值