小编Cod*_*ape的帖子

关闭 getopt_long (getopt.h) 中的缩写?

是否可以关闭缩写getopt_long()?从手册页:

如果缩写是唯一的或者与某些定义的选项完全匹配,则可以缩写长选项名称。

我想这样做是因为我收到的一段代码的规范要求标志的全长精确匹配,并且有很多标志。

unix linux getopt getopt-long

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

通过套接字发送 C 字符数组

我想通过 unix 中的 tcp 套接字发送字符数组。

我的第一个想法是使用普通的 char 数组作为将通过套接字发送的结构:

typedef struct __attribute__((packed))
{
   uint8_t type;
   uint8_t id_index;
   char char_value[STR_MSG_MAX];
} a_msg;
Run Code Online (Sandbox Code Playgroud)

很简单,因为 C 字符总是 8 位长。然而,经过一番谷歌搜索后,我发现即使 char 总是 8 位长,底层表示实际上也可能是 32 位整数。所以我的印象是 char 可能不是在消息中表示字符串的最佳方式,该消息将通过套接字从 FreeBSd 发送到 Linux(或者如果您想输入一些其他 unix =)...)。

stdint.h 存在于当今所有现代 UNIX 上(我希望),我的想法是,也许 uint8_t 或 int8_t 数组可以解决这个问题。

typedef struct __attribute__((packed))
{
   uint8_t type;
   uint8_t id_index;
   uint8_t char_value[STR_MSG_MAX];
} a_msg;
Run Code Online (Sandbox Code Playgroud)

或者

typedef struct __attribute__((packed))
{
   uint8_t type;
   uint8_t id_index;
   int8_t char_value[STR_MSG_MAX];
} a_msg;
Run Code Online (Sandbox Code Playgroud)

但是,uint8_t 是无符号字符,int8_t 是有符号字符。标准 C 字符都不是,因为据我了解,实现是未定义的。

我的问题是:用 C 表示字符数组(字符串)的最佳方式是什么,该数组将以 *nix(Linux、FreeBSD …

c unix

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

Pexpect不能做什么可以做到的?

我正在考虑开始使用Pexpect.在Pexpects主页上我发现:

问:为什么不直接使用Expect?

A:我喜欢它.这很棒.我已经把我从一些真正的果酱中拯救出来,但是我想要的东西可以达到我所期望的90%的Expect; 是10%的大小; 并允许我用Python而不是TCL编写我的代码.Pexpect并不像Expect那么大,但是Pexpect做了我曾经用过的所有东西.

Pexpect和Expect之间有10%的差异.所以我的问题是这10%的差异是什么.什么是Expect可以做的,Pexpect不能.

comparison expect pexpect

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

标签 统计

unix ×2

c ×1

comparison ×1

expect ×1

getopt ×1

getopt-long ×1

linux ×1

pexpect ×1