标签: flags

Go 的 os.OpenFile 标志参数中管道字符的用途是什么?

在使用OpenFileGo的os包中的函数时,管道符到底有什么作用?

例子:

os.OpenFile("foo.txt", os.O_RDWR|os.O_APPEND, 0660)

它符合逻辑吗OR?如果是这样,Go 会选择第一个“真实”的吗?由于这些标志代表的常量,其核心只是以十六进制编写的整数,那么编译时 Go 如何选择要应用哪个标志?

毕竟,如果函数调用按最大数字进行,os.O_APPEND则将优先于传入的所有其他标志,如下所示:

os.O_RDWR == syscall.O_RDWR == 0x2 == 2
os.O_APPEND == syscall.O_APPEND == 0x400 == 1024
os.O_CREATE == syscall.O_CREAT == 0x40 == 64
Run Code Online (Sandbox Code Playgroud)

更新1

为了跟进下面的评论,如果我有一个按位运算符计算,os.O_APPEND|os.O_CREATE如果文件存在,或者只是根据需要创建/附加,会出现该错误吗?

更新2

我的问题有两个,一是了解按位运算符的用途,我现在知道它更多地用作位掩码操作;二是了解按位运算符的用途。第二,如何使用该os.OpenFile()函数作为创建或追加操作。在我的尝试中,我发现以下组合效果最好:

file, _ := os.OpenFile("foo.txt", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0660)
file.WriteString("Hello World\n")
file.Sync()
Run Code Online (Sandbox Code Playgroud)

这是正确的方法还是有更简洁的方法来做到这一点?

filesystems flags pipe go bitwise-operators

2
推荐指数
1
解决办法
1212
查看次数

6502内存中存储的字节是有符号的还是无符号的?

在为我的 6502/NES 模拟器创建指令函数时,我一直在理解 6502 中带符号字节和二进制补码的概念。显然,诸如 BMI 之类的分支指令在内存中使用带符号字节来进行前向/后向分支,而某些指令则使用内存中的带符号字节来进行前向/后向分支。指令允许使用负数进行算术运算。负标志还检测累加器的第 7 位。(二进制补码)

这是否意味着内存中的所有字节都已签名,并且我可以将内存初始化为int8_t CPUMEMORY[0x10000];或不初始化uint8_t CPUMEMORY[0x10000]

但令我困扰的是,当运算结果超过无符号 8 位限制(即 255)时,就会设置进位标志。但如果所有字节都已签名,这不应该是 127 吗?(溢出标志可以做到这一点,但是拥有进位标志有什么意义呢?)

assembly flags 6502 twos-complement

2
推荐指数
1
解决办法
2825
查看次数

我可以将命令行参数读取为二进制吗?

是否可以将命令行参数读取为二进制数?如果是,如何?

例如, ./a -v 10010110

此选项允许用户从 12 个寄存器中选择要使用的寄存器。我希望用户传递一个 16 位二进制数,需要使用 flag 读取寄存器1,否则使用 flat 0

这是我心中的想法。如果这不是一个好主意,我怎样才能在不混淆用户的情况下完成它?

c flags command-line

2
推荐指数
1
解决办法
208
查看次数

`-s --` 标志对 npm 有什么作用?

我刚刚看了Kent C. Dodds的视频,他解释了他的.bash_profile.

他为yarnand使用以下别名npm

## npm aliases
alias ni="npm install";
alias nrs="npm run start -s --";
alias nrb="npm run build -s --";
alias nrd="npm run dev -s --";
alias nrt="npm run test -s --";
alias nrtw="npm run test:watch -s --";
alias nrv="npm run validate -s --";
alias rmn="rm -rf node_modules";
alias flush-npm="rm -rf node_modules && npm i && say NPM is done";
alias nicache="npm install --prefer-offline";
alias nioff="npm install --offline";

## yarn …
Run Code Online (Sandbox Code Playgroud)

bash flags npm npm-scripts yarnpkg

2
推荐指数
1
解决办法
1225
查看次数

如何删除 PHP int 中的位标志?

假设我有

$flags=JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE;
Run Code Online (Sandbox Code Playgroud)

我怎样才能从中删除 JSON_UNESCAPED_SLASHES $flags

php flags bit-manipulation

2
推荐指数
1
解决办法
1453
查看次数

如何在 GoLang 中取消设置在命令行上访问的标志以进行测试

我正在尝试运行每次使用不同参数多次调用同一函数的测试。这是一个接受不同命令行标志的应用程序。如果未提供命令行标志,则使用默认值。

flagset = make(map[string]bool)
flagset["flag1"] = false
flagset["flag2"] = false
flagset["flag3"] = false
flagset["flag4"] = false
func LoadCommandLineArguments(args []string) error{
        err := flag.CommandLine.Parse(args)
        /*Do error handling
         */
       flag.Visit(func(f *flag.Flag) { flagset[f.Name] = true })
       // Iterate through all the flags and set their default values whatever was not passed on the commandline.
}

func resetFlags(){
/* Reset flag variables to their original default values and set map values to false */
flagset["flag1"] = false
flagset["flag2"] = false
flagset["flag3"] = false …
Run Code Online (Sandbox Code Playgroud)

flags command-line go

2
推荐指数
1
解决办法
3542
查看次数

带有 FLAG_IMMUTABLE 的 Kotlin PendingIntent 不适用于 exoplayer

当我在音乐应用程序中播放歌曲时,我正在使用待处理的意图来创建通知栏。它曾经完美地工作,但我必须将我的 targetSdk 更新到 31 并且我遇到一个错误,告诉我我需要在endingIntent 中使用一些标志:

Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.
Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles.
Run Code Online (Sandbox Code Playgroud)

问题是我在声明待决意图时使用此标志:

 val pendingIntent = PendingIntent.getActivity(
        applicationContext,
    0,
        packageManager?.getLaunchIntentForPackage(packageName),
        PendingIntent.FLAG_IMMUTABLE
    )
Run Code Online (Sandbox Code Playgroud)

所以我不明白为什么它说我需要在我已经使用该标志时使用它?我错过了什么吗?

编辑

Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being …
Run Code Online (Sandbox Code Playgroud)

flags android kotlin android-pendingintent exoplayer

2
推荐指数
1
解决办法
763
查看次数

壳脚本-x标志意思

我有一个#!/ bin/sh脚本,其中包含以下行:

if [ ! -x "$TEST_SLAPD" ]
Run Code Online (Sandbox Code Playgroud)

$TEST_SLAPD 是.bat文件的完整路径.

我想知道-xif声明在该声明的背景下意味着什么?

shell flags if-statement sh

1
推荐指数
1
解决办法
1万
查看次数

按位标志检测

我在PHP中使用标志检测时遇到问题.

<?php
class event
{
    const click = 0x1;
    const mouseover = 0x2;
    const mouseenter = 0x4;
    const mouseout = 0x8;
    const mouseleave = 0x16;
    const doubleclick = 0x32;

    public static function resolve($flags)
    {
        $_flags = array();

        if ($flags & self::click) $_flags[] = 'click';
        if ($flags & self::mouseover) $_flags[] = 'mouseover';
        if ($flags & self::mouseenter) $_flags[] = 'mouseenter';
        if ($flags & self::mouseout) $_flags[] = 'mouseout';
        if ($flags & self::mouseleave) $_flags[] = 'mouseleave';

        return $_flags;
    }
}

var_dump(event::resolve(event::click | event::mouseleave));

var_dump(event::resolve(event::mouseleave)); …
Run Code Online (Sandbox Code Playgroud)

php flags bit-manipulation

1
推荐指数
1
解决办法
167
查看次数

`-V`标志如何既是`--verbose`又是`--version`?

来自https://github.com/karelzak/util-linux/blob/master/disk-utils/mkfs.c#L94-L113

/* Check commandline options. */
opterr = 0;
while ((more == 0)
       && ((i = getopt_long(argc, argv, "Vt:h", longopts, NULL))
       != -1))
    switch (i) {
    case 'V':
        verbose++;
        break;
    case 't':
        fstype = optarg;
        break;
    case 'h':
        usage();
    case VERSION_OPTION:
        print_version();
    default:
        optind--;
        more = 1;
        break;  /* start of specific arguments */
Run Code Online (Sandbox Code Playgroud)

mkfs的文档说这-V是版本和详细的短标志.我无法理解这是如何可能的,我正在寻找清晰度.

VERSION_OPTION被定义为enum { VERSION_OPTION = CHAR_MAX + 1 };所以我不确定是什么字符.

c flags getopt

1
推荐指数
1
解决办法
175
查看次数