linux c 编程:创建一个线程,监视某个目录,一旦目录里出现新的文件,就将文件转移到指定的目录里去。

linux c 编程:创建一个线程,监视某个目录,一旦目录里出现新的文件,就将文件转移到指定的目录里去。,第1张

/*

头文件

*/

#define SRCPATH "srcpath/"

#define DSTPATH "dstpath/"

int movefile()

{

DIR *dir

struct dirent *dt

FILE *fp1,*fp2

char filename1[256],filename2[256]

char buf[1024]

int readsize,writesize

if((dir = opendir(SRCPATH)) == NULL)

{

printf("opendir %s error\n",SRCPATH)

return -1

}

memset(filename1,0,sizeof(filename1))

strcpy(filename1,SRCPATH)

memset(filename2,0,sizeof(filename2))

strcpy(filename2,DSTPATH)

while(1)

{

while((dt = readdir(dir)) != NULL)

{

if(strcmp(dt->d_name,".")==0||strcmp(dt->d_name,"..")==0)

{

continue

}

//如果这个目录里 还有目录,可以在这加判断

//这里假设初始为空目录

strcat(filename1,dt->d_name)

strcat(filename2,dt->d_name)

//如果进程资源较少可以直接用linux系统命令

fp1 = fopen(filename1,"rb")

if(fp1==NULL)

{

printf("open %s failed /n",filename1)

return -1

}

fp2 = fopen(filename2,"wb")

if(fp2==NULL)

{

printf("open %s failed /n",filename2)

fclose(fp1)

return -1

}

while((readsize = fread(buf,sizeof(buf),1,fp1))>0)

{

//total += readsize

memset(buf,0,sizeof(buf))

writesize = fwrite(buf,sizeof(buf),1,fp2)

if(writesize!==readsize)

{

printf("write error")

return -2

fclose(fp1)

fclose(fp2)

}

}

fclose(fp1)

fclose(fp2)

rmdir(filename2)

}

}

}

int main(int argc,char **argv)

{

pthread_t id1

int ret

ret = pthread_create(&id1, NULL, (void*)movefile, NULL)

return ret

}

自己调试下

Linux正在成为开发人员的编程天堂,成为开源和免费 *** 作系统。 Turbo C编译器已经是一种编译程序的旧方法,所以让程序员转向Linux以获得新的编程环境。 在本文中,我们将解释如何编写,编译和运行一个简单的C程序。 这将成为您迁移到可以在Linux上编写和执行的更复杂和有用的C程序的基础。

我们在Ubuntu 18.04 LTS系统上运行了本文中提到的步骤和命令。

我们将使用Linux命令行工具Terminal,以编译一个简单的C程序。 要打开终端,您可以使用Ubuntu Dash或Ctrl + Alt + T快捷方式。

第1步:安装build-essential软件包

为了编译和执行C程序,您需要在系统上安装必要的软件包。 在Linux终端中以root用户身份输入以下命令:

sudo apt-get install build-essential

系统会要求您输入root用户密码安装过程将在此之后开始。 请确保您已连接到互联网。

第2步:编写一个简单的C程序

安装必要的软件包之后,让我们编写一个简单的C程序。

打开Ubuntu的图形文本编辑器,将以下示例程序写入或复制到其中:

#include<stdio.h>

int main()

{

printf("nA sample C program www.linuxidc.comnn")

return 0

}

然后使用.c扩展名保存文件。 在这个例子中,我将我的C程序命名为linuxidc.c

或者,您可以通过gedit中的终端编写C程序,如下所示:

gedit linuxidc.c

这将创建一个.c文件,您可以在其中编写和保存程序。

第3步:使用gcc编译C程序

在终端中,输入以下命令以生成您编写的程序的可执行版本:

句法:

$ gcc [programName].c -o programName

示例:

$ gcc linuxidc.c -o linuxidc


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8401073.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-16
下一篇2023-04-16

发表评论

登录后才能评论

评论列表(0条)

    保存