【问题标题】:Using exec to launch applications/accessories使用 exec 启动应用程序/附件
【发布时间】:2013-11-20 23:23:49
【问题描述】:

我是 Linux 新手,不是 c 方面的专家。

尽管搜索了很多次,我还是不明白如何使用 exec 启动应用程序。

这是我的代码的 sn-p:

    else if(cpid>0){
    write(STDOUT_FILENO,"in parent",9);
    sleep(1);
    wait(NULL);
    write(STDOUT_FILENO,"CLOSE",5);
    exit(1);
    }
    else{ //child
    execl("menu://applications/Accessories","menu://applications/Accessories","Galculator",NULL);


          exit(1);
      }

请指导我。 谢谢

【问题讨论】:

  • 您遇到的错误究竟是什么。检查execl的返回值并调用perror
  • 我得到的错误是没有这样的文件或目录@JesusRamos
  • @hek2mgl 我已经阅读了手册页,不幸的是我仍然遇到了这个问题。
  • 这并不是粗鲁的意思。手册页几天前帮助了我。您使用的是奇怪的协议menu://。没听说过
  • 如果这是在 linux 上,请尝试 execl("galculator", "galculator", NULL); 我无法判断您目前正在尝试做的事情(使用 Galculator 作为参数启动附件?)

标签: c linux exec


【解决方案1】:

试试

if (argc != 2) /* [0] = "run", [1] = "app to run" */
{
    fprintf(stderr, "Usage: run <app name>\n");
    exit(1);
}
const char *app = argv[1];
int ret;
ret = execl(app, app, NULL);
if (ret < 0)
    perror("execl");

Linux 中的路径基于文件系统路径,您似乎将其与您正在使用的任何窗口管理器中的 GUI 元素返回的路径混淆了。如果 galculator 在您的 binpath 中,这应该可以工作(据我所知,它应该是)。

【讨论】:

  • 我按照你的要求尝试了,但我仍然没有收到这样的文件或目录错误@JesusRamos
  • @user3015353 你到底在尝试什么?你可以从终端运行Galculator 吗?它安装在哪里?您在这里没有提供足够的信息来帮助您。
  • 请原谅我缺乏知识。我会以正确的信息回复您。感谢您的帮助和时间@JesusRamos
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-05
  • 2013-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多