2011-09-23 44 views
0

我发现我可以通过右键单击桌面在Linux中使用一种称为启动器的东西。配置linux启动器来传递变量

我已经设置了这个在终端运行我的程序,我很高兴,但我想给它一些默认值,当它运行。

我猜我应该把程序路径后的值与 - befor他们,但我不知道我在做什么。

有些人可以指向一个文档,或者是列出了包含值的方式和我可以包含在路径中的东西。

如果我这样做,我的程序将如何读取它们?他们会传递给主?

是否可以通过程序不知道启动时会有多少变量来进行设置的方式来进行设置,但是会尽可能多地进行读取。

即时通讯使用c + +。

回答

1

如果我没有记错运行的终端是一样的东西

rxvt -backspacekey -sl 2500 -tn msys -geometry 80x25 -e 'script.sh -param' --login -i 

-e命令参数...命令来执行

因此,创建一个文件中命名myApp.sh(相当多的等效.BAT在Windows上)

输入以下内容:

!/bin/sh 
rxvt -geometry 80x25 -e 'yourExecutableName yourCommandLine' --login -i 

保存后,只是使用chmod + X上的文件(因此Linux将考虑它作为一个可执行文件)

chmod +x myApp.sh 

在此之后,你可以从任何地方你的机器上运行它(如果该目录是在PATH环境变量),或通过双点击Gnome文件管理器。

如果您还需要将参数传递给shell,则可以使用 $ 0,$ 1,$ 2(等同于MS批处理中的%1,%2)访问每个参数。

对于命令线,C/C++程序与主

int main (int argc, char ** argv) { 
    exit(0); 
} 

的argc是在输入端接收的参数的数目的函数通常开始,而argv的是一个指针,指向字符*的阵列(实际命令行),你可以直接解析它们。 PS:请注意,我使用rxvt,您可能希望将其更改为xterm或gterm或您希望使用的任何终端。

+0

对不起,但我没有线索说你的话。我在哪里放这个代码? – Skeith

+0

将编辑我的回复。 – BigMike

0

您不需要C++。基本上,你几乎可以做到这一点,因为你可以在Windows下做到这一点,但具体的细节取决于你正在使用的管理器(Gnome,KDE等)的窗口 。程序信息是 传递给主要通过argv(这也是在Windows中获得它的首选方式 ,我相信)。您无权访问原始命令行。

+0

不,我想要一个文件,我可以双击这将是脚本。该脚本会打开一个终端并运行我的C++程序,并传递给它某些字母。我怎么知道什么窗口管理器即时通讯使用? – Skeith

+0

Linux上通常使用的脚本语言是'bash',但您几乎可以使用任何东西。你可能不需要它;您可以在配置按钮时指定任意命令行。窗口管理器应该在视觉上可识别;如果没有别的,就有一个关于按钮的地方,它会告诉你哪个版本等等。传递给你程序的参数显示在'argv'中。 –

+0

什么按钮?即时通讯查看一台centos机器的桌面,我想在那里放置一个文件,点击后会以同样的方式打开终端,顶部栏中的按钮工作,但它传递变量。我真的很困惑你在说什么。 – Skeith