命令行参数

UE4命令行参数解析

醉酒当歌 提交于 2019-12-13 01:32:34
转自: https://blog.csdn.net/u012999985/article/details/53544389 一 .命令行参数简述 命令行参数是一连串的关键字字符串,当运行可执行文件时可以通过命令行或者可执行文件的快捷方式将其传入。它们的目的是自定义引擎运行的方式,以便符合开发人员或用户的需要。一般用途如下,注:命令行不区分大小写 第一,这可以使得运行编辑器而不运行游戏变得很简单(只要加上几个字符即可,见图1-1)。第二,可以更方便的配置客户端IP,服务器以及其他更丰富的运行信息。第三,它也可以更加复杂。玩家可以自定义命令行参数,并在代码中解析与使用,比如使用某个特定的地图在指定的分辨率和帧频率下启动游戏。图1-1是4个bat批处理文件,用来打开不同的游戏端(编辑器,本地游戏,游戏客户端以及专有服务器),游戏工程名后面的都是命令行参数。我们也可以直接在程序的快捷方式里面添加,如图1-2。 图 1-1 通过Bat文件打开不同游戏端的命令行参数 图 1-2在快捷方式里传入命令行参数 总体上来说,命令行参数其实分为两类,一类是UE4引擎提供的参数,比如配置地图名称,IP地址,是否开启服务器等。(想了解更多参数可以参考官方文档)另一类就是玩家自定义的参数,用来给开发者提供另一种配置游戏的方式。玩家其实可以随意添加参数,但是如果没有在代码中解析,这些无意义的参数不会有任何影响。

printf函数与缓冲区

六眼飞鱼酱① 提交于 2019-12-11 20:05:28
printf函数与缓冲区 pr intf函数是一个行缓冲函数,先将内容写到缓冲区,满足一定条件后,才会将内容写入对应的文件或流中。 基本条件如下: 1.缓冲区填满 2.写入的字符中有‘\n’ '\r' 3.调用fflush或stdout手动刷新缓冲区 4.调用scanf等要从缓冲区中读取数据时,也会将缓冲区内的数据刷新5.程序结束时 有以下示例1验证: 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 /*argc:命令行输入参数个数,argv:命令行参数 5 *argv为字符指针数组,argv[i]为指向第i个命令行参数内容的指针 6 */ 7 int main(int argc, char **argv){  8 int i; 9 char a='a'; 10 if(argc != 2) //命令行参数为2,否则出错 11 { 12 printf("Usage:%s Number\n",argv[0]);  13 return 0; 14 } 15 16 for(i=0;i<atoi(argv[1]);i++) //atoi:字符转化为整数 17 { 18 printf("%c",a); 19 } 20 21 while(1); //让程序一直运行 22 } 运行结果: 说明linux下,printf缓冲区大小为1024字节

进程间通信 IPC interprocess communication

非 Y 不嫁゛ 提交于 2019-12-06 20:09:55
1,管道,FIFO 2, 信号 3,消息队列 4,共享类存 5.文件映射 6.socket ( 1 )管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。   ( 2 )命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建。   ( 3 )信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数)。   ( 4 )消息(Message)队列:消息队列是消息的链接表,包括Posix消息队列system V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺   ( 5 )共享内存:使得多个进程可以访问同一块内存空间

在OpenCV里实现命令行参数输入

不羁的心 提交于 2019-12-06 17:35:51
有时候需要提供一个程序给另外一个程序调用,方法有很多,比如使用模块的方式,比如使用库的方式,但也可以采用命令行的方式,这样还可以独立地运行和开发。采用命令行的方式,那么就需要对命令行参数进行识别,这里就来实现相关的参数的识别功能。首先导入库: import argparse 接着创建argparse.ArgumentParser()对象,然后调用add_argument来添加参数,最后parse_args()来分析参数输入。例子演示如下: #python 3.7.4,opencv4.1 #蔡军生 https://blog.csdn.net/caimouse/article/details/51749579 # import argparse import cv2 ap = argparse.ArgumentParser() ap.add_argument("-i", "--image", required = True,help = "Path to the image") args = vars(ap.parse_args()) image = cv2.imread(args["image"]) print("width: {} pixels".format(image.shape[1])) print("height: {} pixels".format(image.shape

pytest--命令行参数

懵懂的女人 提交于 2019-12-06 12:54:04
使用pytest --help可以查看全部选项 ​ -v:pytest -v 说明:可以输出用例更加详细的执行信息,比如用例所在的文件及用例名称等 -q(--quiet) 该选项的作用与-v/--verbose的相反,简化输出信息。 -k -k 选项允许使用表达式指定希望执行的测试用例,例如:test_answer() test_result() 那么可以用表达式"answer or result"来筛选。结合-v或者--verbose查看是否符合预期,如下图: -m   标记(marker)用于标记测试并分组,以便快速选中并运行。以test_answer() 、 test_result1()为例,它们甚至都不在同一个文件里,如果希望同时运行它们,那么可以预先做好标记。   这里使用什么标记名可以自定义,比如使用run_cases则可以用 @pytest.mark.run_cases这样的装饰器(decorator)来标记,如下所示: 给test_result()也做上同样的标记。有相同标记的测试用例,可以一起运行。使用 pytest -m run_cases 命令就可以同时运行test_answer()和test_result1()。如下图:  使用-m选项还可以用表达式指定多个标记各。使用-m "mark1 and mark2"可以同时选中带有这两个标记的所有测试用例。使用-m

进程间通信 IPC interprocess communication

做~自己de王妃 提交于 2019-12-06 03:47:21
1,管道,FIFO 2, 信号 3,消息队列 4,共享类存 5.文件映射 6.socket ( 1 )管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。   ( 2 )命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建。   ( 3 )信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数)。   ( 4 )消息(Message)队列:消息队列是消息的链接表,包括Posix消息队列system V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺   ( 5 )共享内存:使得多个进程可以访问同一块内存空间

golang 命令行参数解析 hflag

删除回忆录丶 提交于 2019-12-06 00:00:29
简介 hflag 是被设计用来替代标准的 flag 库,提供更强大更灵活的命令行解析功能,相比标准库, hflag 有如下特点 支持可选参数和必选参数 支持参数缩写 支持位置参数,位置参数可以出现在任意位置 支持 bool 参数简写 ( -aux 和 -a -u -x 等效) 支持值参数缩写 ( -p123456 和 -p 123456 等效) 更多类型的支持,支持 net.IP , time.Time , time.Duration , []int , []string 的解析 更友好的用法帮助 提供一套更简洁的 api 完全兼容 flag 接口 用法 hflag 提供两套 api ,一套完全兼容标准库的 flag 接口,另一套类似 python 的 argparse 先定义 flag ,在使用时从 flag 中获取 新接口 package main import ( "fmt" "github.com/hpifu/go-kit/hflag" ) func main() { hflag.AddFlag("int", "int flag", hflag.Required(), hflag.Shorthand("i"), hflag.Type("int"), hflag.DefaultValue("123")) hflag.AddFlag("str", "str flag",

关于运行Python脚本命令行参数传递

六月ゝ 毕业季﹏ 提交于 2019-12-05 20:34:20
在运行Python脚本的时候,需要的参数没有传入的时候就会报错,而又不知道怎么传入。如下参数解析函数就会检查是否按要求传入了所需的参数。如下所示: def parse_args(): parser = argparse.ArgumentParser(description='Convert dataset') # parser.add_argument( # '--dataset', help="cocostuff, cityscapes", default=None, type=str) parser.add_argument( '--dataset', help="cocostuff, cityscapes", default=None, type=str) parser.add_argument( '--outdir', help="output dir for json files", default=None, type=str) parser.add_argument( '--datadir', help="data dir for annotations to be converted", default=None, type=str) if len(sys.argv) == 1: parser.print_help() sys.exit(1) return

Python3之命令行参数处理

核能气质少年 提交于 2019-12-05 09:47:49
sys模块 常用单元 getopt模块 optparse模块 argparse模块 toc sys模块 sys模块代表了Python解释器,主要用于获取和Python解释器相关的信息,其中 sys.argv 可以获取命令行参数 在Python交互式解释器中可以先导入sys模块 import sys ,再输入 dir(sys) 查看sys模块所包含的全部程序单元(包括变量、函数等),或者 [i for i in dir(sys) if not i.startswith('_')] 过滤掉隐藏的单元 常用单元 sys.argv :以列表的方式获取运行 Python 程序的命令行参数存放其中。其中 sys.argv[0] 通常就是指该 Python程序本身, sys.argv[1] 代表第一个参数, sys.argv[2] 代表第二个参数,以此类推。类似于 Shell 中的 $0、$1、$2 import sys print('程序名称为:{},第一个参数为:{},第二个参数为:{}'.format(sys.argv[0], sys.argv[1], sys.argv[2])) sys.byteorder :显示本地字节序的指示符。如果本地字节序的大端模式,则该属性返回big,否则返回little sys.copyright :该属性返回与 Python 解释器有关的版权信息 sys

golang编程之获取命令行参数及环境变量

假装没事ソ 提交于 2019-12-05 01:28:16
http://blog.chinaunix.net/uid-24774106-id-3990722.html 我们写习惯了C代码,都知道了解析输入参数argc argv,获取环境变量env,常见的C语言main函数有: int main ( int argc , char * argv [ ] , char * * envp ) 我们首先给出C语言的获取命令行参数和环境变量的代码: manu@manu - hacks : ~ / code / c / self / env$ cat env . c #include < stdio . h > #include < stdlib . h > int main ( int argc , char * argv [ ] , char * * envp ) { int i ; printf ( "there are %d input param\n" , argc ) ; printf ( "they are :\n" ) ; for ( i = 0 ; i < argc ; i + + ) { printf ( "%s\n" , argv [ i ] ) ; } printf ( "env LIST--------------------------------------\n" ) ; char * * p = envp ; for