打开目录中的文件夹

时间:2014-07-27 17:53:53

标签: c++ c file unix fork

我希望我的C ++应用程序实现“打开文件夹”功能,就像在firefox和下载管理器中一样。这是我提出的代码。

int File::openTempFile(std::string temp_file_dir)
{
  std::string file_path = temp_file_dir + "/" ;
  file_path = file_path + this->additional_info ;

  // if there is already an temporary file then delete it//
  if( temporary_file != "" )
  {
    // :TODO: open temporary file stack //
    // so when the application dinit we could remove those //
    // remove(temporary_file.c_str() );
  } 

  /* write temporary file */
  FILE* fp = fopen (file_path.c_str(), "w");
  if( fp== NULL)
    return FALSE;
  fwrite( m_data, 1, m_size, fp);
  fclose(fp); 

  // now open it using natulus //
  char * parmList[] = {strdup("nautilus"),strdup(file_path.c_str() )} ;
  int pid;
  if(( pid= fork() ) == -1) 
    perror("fork failed");
  if( pid ==0 ){
    int a = execvp("nautilus" , parmList);
    printf("exevp failed to load the temporary file");
  }
  temporary_file = file_path ;
  return TRUE;
}

但是不是一个nautilus窗口,它打开3个窗口。任何想法是什么原因?我怎么能得到nautilus“打开”对话框而不是显示在目录上?

1 个答案:

答案 0 :(得分:2)

打开文件夹时,我使用xdg-open命令打开指定文件夹,并为给定的桌面环境打开首选文件管理器。

在我的系统运行KDE时,它会调用dolphin来显示文件夹,xfce4会调用thunar,因为它们是nautilus根据我的设置首选文件管理器。我经常不希望使用nautilus,因为界面与我的首选应用程序不同,在小部件,样式等方面看起来与其他应用程序不一致 - 并赢得& #39; t在我的任务栏中对它进行分组。

它还为我的默认开放式设置使用单独的首选项,并与我的工作流程冲突。

此外,emerge并非必须保证在我的系统上。 例如,在我的一些旧系统中,我已经emerge定制gentoo系统,我受RAM或硬盘空间限制,我只有twm d说xfce4nautilus,所以twm不存在。

就nautilus特定的行为而言,我遇到了类似的问题,nautilus在初始调用时创建了一个桌面(就像我运行nautilus --help时那样)。

调用Application Options: -c, --check Perform a quick set of self-check tests. --version Show the version of the program. -g, --geometry=GEOMETRY Create the initial window with the given geometry. -w, --new-window Always open a new window for browsing specified URIs -n, --no-default-window Only create windows for explicitly specified URIs. --no-desktop Never manage the desktop (ignore the GSettings preference). --force-desktop Always manage the desktop (ignore the GSettings preference). -q, --quit Quit Nautilus. -s, --select Select specified URI in parent folder. --display=DISPLAY X display to use 会显示以下选项:

nautilus

很遗憾,我无法帮助您专门调用xdg-open"打开..."对话框,虽然mimeapps.list将在指定文件时使用默认应用程序。可能是{{1}}文件中的轮询配置(可以位于多个级联覆盖位置之一:包括但不限于用户桌面,用户,sysadmin-desktop,sysadmin,default-desktop和default)。