Linux桌面菜单(.menu)规范

2023-05-16

Version 1.1,最新版
20 August 2016


文章目录

  • 介绍
  • 文件位置
  • .desktop文件的扩展
    • 使用Categories和OnlyShowIn的例子
  • 菜单文件的格式
    • 文件类型声明
    • 元素
  • 示例菜单文件
  • A.注册类别
    • 主要类别
    • 其他类别
    • 保留类别
  • B.注册OnlyShowIn环境
  • C.将您的应用程序集成到菜单中
    • 添加菜单项
    • 安装位置

介绍

本文档定义了如何构建用户可见的应用程序层次结构,通常以菜单的形式显示。它允许第三方软件添加适用于所有桌面的菜单项,并允许系统管理员以影响所有桌面的方式编辑菜单。

基本方案非常简单。有关每个应用程序(菜单项)的信息存储在桌面入口文件中(请参阅桌面入口文件标准)。然后,XML配置文件定义菜单项的分层排列(布局)和实际需要显示的菜单项。

由于即要支持传统桌面入口的层次结构,又要允许第三方扩展菜单布局,所以需要合并两个菜单布局。

除了严格定义每个菜单的规范之外,本规范还提到了许多布局/呈现方式。这一部分规范是可选的,实际上可以选择忽略这些提示。

文件位置

本规范中涉及的文件根据 桌面基本目录规范 定位。

以下是此规范定义的文件:

  • $XDG_CONFIG_DIRS/menus/${XDG_MENU_PREFIX}applications.menu
$XDG_CONFIG_DIRS 默认位置为 $HOME/.config : /etc/xdg 

例如,它应该将$XDG_MENU_PREFIX环境变量分别设置 为“gnome-”、“kde-”。
如果系统同时包含GNOME和KDE桌面环境,则可以决定使用gnome-applications.menu作为GNOME会话中的菜单布局,将kde-applications.menu作为KDE会话中的菜单布局。

如果用户拥有自己的${XDG_MENU_PREFIX}applications.menu,它将取代系统的applications.menu。

  • $XDG_CONFIG_DIRS/menus/applications-merged/

    默认合并目录包含在元素中。按照惯例,第三方可以在此位置添加新的

    文件以创建自己的子菜单。

    请注意,根据所使用的桌面环境,使用gnome-applications.menu或kde-applications.menu;在两种情况下,仍必须使用applications-merged作为默认合并目录。

    对于除应用程序主要菜单之外的任务或菜单,可以选择使用除application.menu以外的名称的.menu文件。在这种情况下,默认合并目录名称的第一部分是从.menu文件的名称派生的。

    例如,在使用preferences.menu文件来描述附加菜单的系统中,preferences.menu文件中元素中包含的默认合并目录将变为 $XDG_CONFIG_DIRS/ menus / preferences-merged /

  • $XDG_DATA_DIRS/applications/

    该目录包含每个可能菜单项的.desktop文件。$XDG_DATA_DIRS中的每个目录都应该被使用(即,从所有目录中收集桌面入口,而不仅仅是存在的第一个目录入口)。当两个桌面入口具有相同名称时,将使用路径中较早出现的那个。

    菜单文件中的元素表示默认的桌面入口位置列表应该被扫描。如果菜单文件不包含,则不扫描这些位置。

  • $XDG_DATA_DIRS/desktop-directories/

    此目录可能包含与菜单布局中的文件夹关联的目录入口。每个目录都应该被使用。仅使用以.directory结尾的文件; 其他文件被忽略。

    菜单文件中的元素表示此默认的目录条目位置列表。如果菜单文件不包含,则不扫描这些位置。

.desktop文件的扩展

该规范增加了三个新领域的桌面项:Categories, OnlyShowIn和NotShowIn。

Categories字段是用于对菜单项进行分类的字符串列表。例如,AudioVideo类别中的应用程序 可能最终出现在“声音和视频”子菜单中。附录A.注册类别 列举了标准类别。不在此文档中的类别必须以字符串“X-”作为前缀,表示它们是扩展名。类别区分大小写。

桌面入口文件应列出所有适用的类别。他们不应该列出只是模糊或可能适用的类别,因为用户最终会在六个地方看到相同的桌面入口。但通常情况下,给出的几个类别总有适用的。

OnlyShowIn字段是一个字符串列表,用于标识应显示在特定的环境。如果存在 OnlyShowIn字段,则应该标明。字符串区分大小写。附录B.Registered OnlyShowIn Environments 枚举了某些常见的环境。

NotShowIn字段是一个字符串列表,用于标识不应显示在特定的环境。如果存在NotShowIn字段,则应该标明。字符串区分大小写。附录B.Registered OnlyShowIn Environments枚举了某些常见的环境。

不在此文档中的环境必须以字符串“X-”作为前缀,表示它们是扩展名。环境区分大小写。

使用Categories和OnlyShowIn的例子

  • 基于Qt的图像查看器的桌面入口可能包含以下Categories行:
    Categories=Qt;Graphics;RasterGraphics;Viewer;
  • Octave,一个命令行的数学程序(还应该有Terminal=true这一行)的桌面入口
    Categories=ConsoleOnly;Math;
  • 仅应出现在GNOME中的GNOME特定计算器程序的桌面文件,可能包含下面字段:
	Categories=GNOME;Utility;
	OnlyShowIn=GNOME;

菜单文件的格式

菜单文件必须是格式良好的XML文件,并以扩展名“.menu”结尾。它们还应符合菜单文件DTD,这意味着不允许对文件格式进行特定的扩展。如果实现遇到不符合相关DTD的菜单文件,则可能会停止运行。请注意,关联的DTD版本可能与本文档中定义的版本不同。

当更新现有菜单文件时,可能需要将标识符更新为较新版本的DTD。永远不应将现有菜单文件的标识符更新为旧版本。为了与更新的版本保持兼容,应该忽略并保留它不知道如何处理的任何XML元素,属性和属性值。

文件类型声明

此版本规范的菜单文件必须使用以下命名空间,公共和系统标识符:

命名空间:http://www.freedesktop.org/standards/menu

1.1的公共标识符:PUBLIC “-//freedesktop//DTD Menu 1.0//EN”

1.1的系统标识符:http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd

这是一个示例文档类型声明:

<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN" 
"http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd">

所有菜单文件必须包含文档类型声明,以便实现可以适应此规范的不同版本(因此实现可以根据DTD验证菜单文件)。

元素

  • <Menu>

根元素是<Menu>。每个<Menu>元素可以包含任意数量的嵌套<Menu>元素,表示子菜单。

<Menu>
	<Menu>
	</Menu>
</Menu>
  • <AppDir>
<Menu>
	<!-- 定位到.desktop文件夹 -->
	<AppDir>/usr/share/applink</AppDir>
</Menu>

比如:<AppDir> /foo/bar/Hello.desktop 的桌面文件id号为 Hello.desktop
   <AppDir>/foo/bar/bo/oz/Hello.desktop 的桌面文件id号为 bo-oz-Hello.desktop

如果作为<AppDir>给出的文件名不是绝对路径,则它应该相对于要解析的菜单文件的位置。
递归扫描,向后合并
<AppDir>元素与<Include>和<Exclude>元素的顺序不相关,也便于合并。

  • <DefaultAppDirs>
<Menu>
	<DefaultAppDirs/>
</Menu>

该元素没有内容。默认包含app dir位置($datadir/applications/)的<AppDir>元素列表。将<DefaultAppDirs>扩展为<AppDir>列表时,搜索路径中较早的默认位置稍后会在<Menu>中显示,以便它们具有优先级。
$datadir默认为 ~/.local/share : /usr/local/share : /usr/share

  • <DirectoryDir>
<Menu>
	<Directory>/usr/share/desktop-directories</Directory>
</Menu>

该元素的内容是目录名称。递归扫描,向后合并。只加载以扩展名“.directory”结尾的文件
例如,如果/usr/share/desktop-directories指定为,则相对路径 /usr/share/desktop-directories/foo/bar.directory为 foo/bar.directory。

  • <DefaultDirectoryDirs>
<Menu>
	<DefaultDirectoryDirs />
</Menu>
  • <Name>
<Menu>
	<Name>金山办公</Name>
</Menu>

必须元素。<Name>字段不得以斜杠字符(“/”)开头。例如,“Foo/Bar/Baz”是有效的菜单路径。

  • <Directory>
<Menu>
	<Name>金山办公</Name>
	<Directory>wps-office.directory</Directory>
</Menu>

给定指定的 .directory文件

  • <OnlyUnallocated> and <NotOnlyUnallocated>
    未分配桌面入口
  • <Deleted> and <NotDeleted>
    如果菜单包含元素后面没有元素,则应忽略该菜单。
  • <Include>
<Menu>
	<Name>Applications</Name>
	<Directory>kf5-unknown.directory</Directory>
	<OnlyUnallocated/>
	<Include>
		<Not>
			<!-- Don't list non-KDE core applications -->
			<And>
				<Category>Core</Category>
				<Not><Category>KDE</Category></Not>
			</And>
			<!-- Don't list SUSE's YaST in here -->
			<Category>X-SuSE-YaST</Category>
			<Category>X-KDE-settings-hardware</Category>
			<Filename>kde-medianotifications.desktop</Filename>
			<Filename>kde-audioencoding.desktop</Filename>
		</Not>
	</Include>
</Menu>

使用元素<And>,<Or>,<Not>,<All>,<Filename>和<Category>指定匹配规则。

  • <Exclude>
    同<Include>
  • <MergeFile [type=“path”|“parent”] >
<Menu>
	<MergeFile type="path" />
</Menu>
  • <MergeDir>
<Menu>
	<MergeDir>/usr/share/merger-dir</MergeDir>
</Menu>
  • <DefaultMergeDirs>
<Menu>
	<DefaultMergeDirs />
</Menu>
  • <LegacyDir>
    旧版菜单层次结构
  • <KDELegacyDirs>
    包含KDE支持的传统桌面文件位置,其硬编码前缀为“kde-”,
  • <Move>
<Move>
  <Old>Foo</Old>
  <New>Bar</New>
  <Old>Foo2</Old>
  <New>Bar2</New>
</Move>   

<Move>元素包含一对<Old> / <New>元素

  • <Layout>

  • <DefaultLayout [show_empty=“false”] [inline=“false”] [inline_limit=“4”] [inline_header=“true”] [inline_alias=“false”]>

<DefaultLayout>
	<Merge type="menus"/>
	<Merge type="files"/>
	<Separator/>
	<Menuname>More</Menuname>
</DefaultLayout>
  • <Menuname [show_empty="…"] [inline="…"] [inline_limit="…"] [inline_header="…"] [inline_alias="…"]>
  • <Separator>
  • <Merge type=“menus”|“files”|“all”/>

示例菜单文件

<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
"http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd">

<Menu>
	<Name>Applications</Name>
	<Directory>Applications.directory</Directory>
	
	<!-- Search the default locations -->
	<!-- -->
	<DefaultAppDirs/>
	<DefaultDirectoryDirs/>
	
	<!-- Merge third-party submenus -->
	<MergeDir>applications-merged</MergeDir>
	
	<!-- Merge legacy hierarchy -->
	<LegacyDir>/usr/share/applnk</LegacyDir>
	
	<!-- Define default layout -->
	<DefaultLayout>
	<Merge type="menus"/>
	<Merge type="files"/>
	<Separator/>
	<Menuname>More</Menuname>
	</DefaultLayout>
	
	<!-- some random moves, maybe to clean up legacy dirs, 
	    maybe from menu editing -->
	<Move>
	<Old>Foo</Old>
	<New>Bar</New>
	<Old>Foo2</Old>
	<New>Bar2</New>
	</Move>          
	
	<!-- A preferences submenu, kept in a separate file 
	    so it can also be used standalone -->
	<Menu>
	<Name>Preferences</Name>
	<Directory>Preferences.directory</Directory>
	<MergeFile>preferences.menu</MergeFile>
	</Menu>
	
	<!-- An Office submenu, specified inline -->
	<Menu>
	<Name>Office</Name>
	<Directory>Office.directory</Directory>
	<Include>
	 <Category>Office</Category>
	</Include>
	<Exclude>
	 <Filename>foo.desktop</Filename>
	</Exclude>
	</Menu>

</Menu>

A.注册类别

主要类别

Main CategoryDescriptionNotes
AudioVideo音频、视频类相关类软件
Audio音频必须包括AudioVideo
Video视频必须包括AudioVideo
Development编程开发
Education教育类、学习类
Game游戏娱乐
Graphics用于查看,创建或处理图形的应用程序
Network网络应用程序,需要联网才能使用的应用
Office办公室类型
Science科学软件
Settings设置应用程序可能出现在单独的菜单中或作为“控制中心”的一部分
System系统工具
Utility小型实用应用,“配件”

其他类别

Additional CategoryDescriptionRelated Categories
Building构建应用程序的工具Development
Debugger调试应用程序的工具Development
IDEIDE应用程序Development
GUIDesignerGUI设计应用程序Development
Profiling分析工具Development
RevisionControl像cvs或subversion这样的应用程序Development
Translation翻译工具Development
Calendar日历应用程序Office
ContactManagement例如地址簿Office
Database数据库Office or Development or AudioVideo
Dictionary字典Office or TextTools
Chart图表应用程序Office
Email邮件Office or Network
Finance金融相关Office
FlowChart流程图应用程序Office
PDAPDA管理工具Office
ProjectManagement项目管理应用Office or Development
Presentation演示软件Office
Spreadsheet电子表格Office
WordProcessor文字处理器Office
2DGraphics基于2D的图形应用Graphics
VectorGraphics用于查看,创建或处理矢量图形的应用程序Graphics;2DGraphics
RasterGraphics用于查看,创建或处理栅格(位图)图形的应用程序Graphics;2DGraphics
3DGraphics用于查看,创建或处理3-D图形的应用程序Graphics
Scanning扫描文件/文本的工具Graphics
OCR光学字符识别应用Graphics;Scanning
Photography相机工具等Graphics or Office
Publishing桌面出版应用程序和颜色管理工具Graphics or Office
Viewer用于查看 例如图形或pdf文件的工具Graphics or Office
TextTools文本工具实用程序Utility
DesktopSettings桌面配置工具Settings
HardwareSettings管理硬件组件的工具,如声卡,视频卡或打印机Settings
Printing管理打印机的工具HardwareSettings;Settings
PackageManager包管理器应用程序Settings
Dialup拨号程序Network
InstantMessaging即时消息客户端Network
Chat聊天客户端Network
IRCClientIRC客户端Network
FeedRSS,播客和其他基于订阅的内容Network
FileTransferFTP或P2P程序等工具Network
HamRadioHAM无线电软件Network or Audio
News新闻阅读器或新闻自动收报机Network
P2P一个P2P程序Network
RemoteAccess远程管理PC的工具Network
Telephony通过PC拨打电话Network
TelephonyTools电话工具,拨号,管理PBX,…Utility
VideoConference视频会议软件Network
WebBrowserWeb浏览器Network
WebDevelopment适用于Web开发人员的工具Network or Development
Midi一个与MIDI相关的应用程序AudioVideo;Audio
MixerJust a mixerAudioVideo;Audio
Sequencer一个音序器AudioVideo;Audio
Tuner一个调谐器AudioVideo;Audio
TV电视应用程序AudioVideo;Video
AudioVideoEditing编辑音频/视频文件Audio or Video or AudioVideo
Player播放音频/视频文件Audio or Video or AudioVideo
Recorder记录音频/视频文件Audio or Video or AudioVideo
DiscBurning刻录光盘AudioVideo
ActionGame动作游戏Game
AdventureGame冒险游戏Game
ArcadeGame街机游戏Game
BoardGame棋牌游戏Game
BlocksGame落块游戏Game
CardGame纸牌游戏Game
KidsGame适合孩子的游戏Game
LogicGame像拼图等逻辑游戏Game
RolePlaying角色扮演游戏Game
Shooter射击游戏Game
Simulation模拟游戏Game
SportsGame体育比赛游戏Game
StrategyGame策略游戏Game
Art教授艺术的软件Education or Science
ConstructionEducation or Science
Music音乐软件AudioVideo or Education
Languages学习外语的软件Education or Science
ArtificialIntelligence人工智能软件Education or Science
Astronomy天文软件Education or Science
Biology生物学软件Education or Science
Chemistry化学软件Education or Science
ComputerScience计算机科学软件Education or Science
DataVisualization数据可视化软件Education or Science
Economy经济软件Education or Science
Electricity电力软件Education or Science
Geography地理软件Education or Science
Geology地质软件Education or Science
Geoscience地球科学软件,GISEducation or Science
History历史软件Education or Science
Humanities哲学,心理学和其他人文科学的软件Education or Science
ImageProcessing图像处理软件Education or Science
Literature文学软件Education or Science
Maps用于查看地图,导航,地图,GPS的软件Education or Science or Utility
Math数学软件Education or Science
NumericalAnalysis数值分析软件Education;Math or Science;Math
MedicalSoftware医疗软件Education or Science
Physics物理学软件Education or Science
Robotics机器人软件Education or Science
Spirituality宗教和精神软件,神学Education or Science or Utility
Sports体育软件Education or Science
ParallelComputing并行计算软件Education;ComputerScience or Science;ComputerScience
Amusement一个简单的娱乐
Archiving存档/备份数据的工具Utility
Compression管理压缩数据/归档的工具Utility;Archiving
Electronics电子软件,例如电路设计师
Emulator另一个平台的模拟器,例如DOS模拟器System or Game
Engineering工程软件,例如CAD程序
FileTools文件工具Utility or System
FileManager文件管理器System;FileTools
TerminalEmulator终端System
Filesystem文件系统工具System
Monitor监视监视某些资源或活动的应用程序/小程序System or Network
Security一种安全工具Settings or System
Accessibility无障碍Settings or Utility
Calculator一个计算器Utility
Clock时钟应用程序/小程序Utility
TextEditor文本编辑器Utility
Documentation帮助或文档
Adult处理成人或显性材料的应用
Core重要的应用程序,是桌面的核心,例如文件管理器或帮助浏览器
KDE基于KDE库的应用程序QT
GNOME基于GNOME库的应用程序GTK
XFCE基于XFCE库的应用程序GTK
GTK基于GTK +库的应用程序
Qt基于Qt库的应用程序
Motif基于Motif库的应用程序
Java基于Java GUI库的应用程序,例如AWT或Swing
ConsoleOnly仅适用于终端(基于文本或命令行应用程序)的应用程序

保留类别

保留类别描述
Screensaver屏幕保护程序(启动此应用应激活屏幕保护程序)
TrayIcon主要是“系统托盘”或“通知区域”的图标的应用程序(打开普通窗口的应用程序,恰好有托盘图标也不应列出此类别)
Applet将在面板或其他此类应用程序中运行的applet,可能是特定于桌面的
Shell一个shell(一个实际的特定shell,如 bash或者tcsh,而不是TerminalEmulator)

B.注册OnlyShowIn环境

OnlyShowIn ValueEnvironment
GNOMEGNOME桌面
KDEKDE桌面
LXDELXDE桌面
LXQtLXQt桌面
MATEMATÉ桌面
RazorRazor-qt桌面
ROXROX桌面
TDETrinity桌面
UnityUnity Shell
XFCEXFCE桌面
EDEEDE桌面
CinnamonCinnamon桌面
PantheonPantheon桌面
Old传统菜单系统

C.将您的应用程序集成到菜单中

添加菜单项

.desktop文件安装在$datadir/applications/中,命名如:vendor-foo.desktop或者vendor/foo.desktop
.menu文件安装在$sysconfdir/menus/applications-merged/
.directory文件安装在$datadir/desktop-directories/

安装位置

$datadir默认为$HOME/.local/share : /usr/local/share : /usr/share
$sysconfig默认为/etc/xdg/

  • .desktop文件
    datadir/applications/shinythings-webmirror.desktop:
[Desktop Entry]
Encoding=UTF-8
Type=Application

Exec=webmirror
Icon=webmirror

Name=WebMirror
Name[nl]=WebSpiegel

datadir/applications/shinythings-webmirror-admin.desktop:

[Desktop Entry]
Encoding=UTF-8
Type=Application

Exec=webmirror-admintool
Icon=webmirror-admintool

Name=WebMirror Admin Tool
Name[nl]=WebSpiegel Administratie Tool
  • .directory文件
    datadir/desktop-directories/shinythings-webmirror.directory:
[Desktop Entry]
Encoding=UTF-8

Icon=webmirror

Name=WebMirror
Name[nl]=WebSpiegel
  • .menu文件
    sysconfdir/menus/application-merged/shinythings-webmirror.menu:
<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
"http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd">
<Menu>
	<Name>Applications</Name>
	<Menu>
		<Name>WebMirror</Name>
		<Directory>shinythings-webmirror.directory</Directory>
		<Include>
			<Filename>shinythings-webmirror.desktop</Filename>
			<Filename>shinythings-webmirror-admin.desktop</Filename>
		</Include>
	</Menu>
</Menu>

原文链接:https://specifications.freedesktop.org/menu-spec/menu-spec-latest.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux桌面菜单(.menu)规范 的相关文章

  • 执行命令而不将其保留在历史记录中[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在进行软件开发时 经常需要在命令行命令中包含机密信息 典型示例是将项目部署到服务器的凭据设置为环境变量 当我不想将某些命令存储在命令历史记
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • ALSA:snd_pcm_writei 调用时缓冲区不足

    当运行我最近从灰烬中带回来的旧程序时 我遇到了缓冲区不足的情况 该程序将原始声音文件完全加载到内存中 2100 字节长 525 帧 并准备 ALSA 进行输出 44 1khz 2 通道 有符号 16 位 if err snd pcm set
  • docker 非 root 绑定安装权限,WITH --userns-remap

    all 尝试让绑定安装权限正常工作 我的目标是在容器中绑定安装卷 以便 a 容器不以 root 用户身份运行入口点 二 docker daemon 配置了 userns remap 这样容器 主机上没有 root c 我可以绑定挂载和读 写
  • 在centos中安装sqlite3 dev和其他包

    我正在尝试使用 cpanel 在 centos 机器上安装 sqlite dev 和其他库 以便能够编译应用程序 我对 debian 比 centos 更熟悉 我知道我需要的库是 libsqlite3 dev libkrb5 dev lib
  • 就分页分段内存而言的程序寿命

    我对 x86 Linux 机器中的分段和分页过程有一个令人困惑的概念 如果有人能澄清从开始到结束所涉及的所有步骤 我们将很高兴 x86 使用分页分段内存技术进行内存管理 任何人都可以解释一下从可执行的 elf 格式文件从硬盘加载到主内存到它
  • linux-x64 二进制文件无法在 linuxmusl-x64 平台上使用错误

    我正在安装Sharp用于使用 package json 的 Nodejs 项目的 docker 映像上的映像压缩包 当我创建容器时 我收到有关 Sharp 包的以下错误 app node modules sharp lib libvips
  • 从 ttyUSB0 写入和读取,无法得到响应

    我对 Linux tty 不太有经验 我的环境是带有丰富 USB 串行的 Raspbian 什么有效 stty F dev ttyUSB0 38400 cu l dev ttyUSB0 s 38400 cu to dev ttyUSB0作品
  • 无需超级用户即可在 Linux 中打开 RAW 套接字

    我必须编写一个在 Linux 上运行的 ping 函数 语言是 C 所以 C 也可以 在网上搜索并查看源代码ping命令 事实证明我应该创建一个原始套接字 icmp sock socket AF INET SOCK RAW IPPROTO
  • 为什么 fopen("any_path_name",'r') 不给出 NULL 作为返回值?

    在调试一些代码时 我得到如下内容 include
  • CMake 链接 glfw3 lib 错误

    我正在使用 CLion 并且正在使用 glfw3 库编写一个程序 http www glfw org docs latest http www glfw org docs latest 我安装并正确执行了库中的所有操作 我有 a 和 h 文
  • 如何使用waf构建共享库?

    我想使用构建一个共享库waf http code google com p waf 因为它看起来比 GNU 自动工具更容易 更简洁 到目前为止 我实际上有几个与我开始编写的 wscript 有关的问题 VERSION 0 0 1 APPNA
  • 内核的panic()函数是否完全冻结所有其他进程?

    我想确认内核的panic 功能和其他类似kernel halt and machine halt 一旦触发 保证机器完全冻结 那么 所有的内核和用户进程都被冻结了吗 是panic 可以被调度程序中断吗 中断处理程序仍然可以执行吗 用例 如果
  • linux下如何从文本文件中获取值

    我有一些文本格式的文件 xxx conf 我在这个文件中有一些文本 disablelog 1 当我使用 grep r disablelog oscam conf 输出是 disablelog 1 但我只需要值1 请问你有什么想法吗 一种方法
  • Linux/POSIX:为什么 fork() 不分叉*所有*线程

    众所周知 POSIX下创建新进程的默认方式是使用fork 在 Linux 下 这在内部映射到clone 我想知道的是 众所周知 当一个人打电话时fork 子进程是用单个线程创建的 调用的线程fork cf https linux die n
  • Apache 访问 Linux 中的 NTFS 链接文件夹

    在 Debian jessie 中使用 Apache2 PHP 当我想在 Apache 的文档文件夹 var www 中创建一个新的小节时 我只需创建一个指向我的 php 文件所在的外部文件夹的链接 然后只需更改该文件夹的所有者和权限文件夹
  • 使用os.execlp时,为什么`python`需要`python`作为argv[0]

    代码是这样的 os execlp python python child py other args this works os execlp python child py other args this doesn t work 我读过
  • 我什么时候应该编写 Linux 内核模块?

    有些人出于某种原因想要将 Linux 中的代码从用户空间移动到内核空间 很多时候 原因似乎是代码应该具有特别高的优先级 或者只是 内核空间更快 这对我来说似乎很奇怪 我什么时候应该考虑编写内核模块 有一套标准吗 我怎样才能激励将代码保存在
  • 如何让 Node.js 作为后台进程运行并且永不死掉?

    我通过 putty SSH 连接到 linux 服务器 我尝试将其作为后台进程运行 如下所示 node server js 然而 2 5 小时后 终端变得不活动 进程终止 即使终端断开连接 我是否也可以使进程保持活动状态 Edit 1 事实
  • ansible unarchive 模块如何查找 tar 二进制文件?

    我正在尝试执行一个 ansible 剧本 该剧本的任务是利用unarchive模块 因为我是在 OSX 上执行此操作 所以我需要使用它gnu tar 而不是bsd tar通常与 OSX 一起提供 因为BSD tar 不受官方支持 https

随机推荐