gpt4 book ai didi

c - 用C打开/启动多个pdf文件?

转载 作者:行者123 更新时间:2023-11-30 17:37:01 25 4
gpt4 key购买 nike

我正在尝试学习C。

我已经制作了这个里尔程序/守护进程。

含义是“任务文件夹”中的任何 .pdf-->(ROOTFOLDER)。

将在启动时通过“evince”开放/午餐。

我需要引导中止线程还是有更好的方法来做到这一点?

我尝试过类似 system("envice 1.pdf && envice 2.pdf ...");

但这仍然只是一次打开一个 pdf 文件。

代码如下所示。

#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <string.h>

#define ROOTFOLDER ((const unsigned char *)"/home/myusername/Taskfolder/")
#define LUNCHERAPP ((const unsigned char *)"evince ")

int main()
{
DIR *d;
struct dirent *dir;
char *ext;
d = opendir(ROOTFOLDER);
if(d)
{
int i=0;
char *tmp;
while((dir = readdir(d)) != NULL)
{
ext = strchr(dir->d_name, '.');
if((ext != NULL) && (ext != 0) && (strcmp(strchr(ext ,'.'), ".pdf") == 0))
{
tmp = malloc(strlen(LUNCHERAPP) + strlen(ROOTFOLDER) + strlen(dir->d_name) + 1);
strcat(tmp, LUNCHERAPP);
strcat(tmp, ROOTFOLDER);
strcat(tmp, dir->d_name);
printf("pdf== %s\n", tmp);
system(tmp);// <-- 'evince ~/Taskfolder/filename.pdf'
free(tmp);
++i;
}
}
closedir(d);
}
return 0;
}

更新代码:

#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <string.h>

#define APP ((const unsigned char *)"evince")
#define ROOTFOLDER ((const unsigned char *)"./")
int main()
{
DIR *d;
struct dirent *dir;
char *ext;
d = opendir(ROOTFOLDER);
if(d)
{
char *cmd = malloc(1);
strcat(cmd, APP);
while((dir = readdir(d)) != NULL)
{
ext = strchr(dir->d_name, '.');
if((ext != NULL) && (ext != 0) && (strcmp(ext, ".pdf") == 0))
{
cmd = realloc(cmd, strlen(cmd)+strlen(ROOTFOLDER)+strlen(dir->d_name)+1);
strcat(cmd, " ");
strcat(cmd, ROOTFOLDER);
strcat(cmd, dir->d_name);
}
}
closedir(d);
printf("\nrun:\n%s\n", cmd);
system(cmd);
free(cmd);
}
return 0;
}

最佳答案

我不熟悉envice,但是这个命令:

"envice 1.pdf && envice 2.pdf ..." 

将为每个文件执行一次 ence。我不认为这就是你的意图。我认为您打算在命令行上使用所有文件执行一次 ence 。如果这是正确的,您需要省略 && 并将其格式化如下:

"envice 1.pdf 2.pdf ..." 

关于c - 用C打开/启动多个pdf文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22522448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com