新版FDS(生态云帐号) or 老版FDS(开放平台开发者帐号) 新版FDS与老版FDS功能相同,仅帐号授权体系不同,新版FDS基于生态云帐号,老版FDS基于开放平台开发者帐号。 推荐大家使用新版FDS,方便团队人员变迁与管理。 开通生态云账号 注册开放平台开发者帐号 * 生态云账号 开通生态云账号 生成/获取密钥 进入用户管理 获取云密钥 图中团队的ID加上CI前缀是FDS中授权中的Grante
平台可以自助管理号码,可以针对号码的操作及查询。 号码操作 开机、关机 支持针对号码的开机、关机操作。 批量开机、批量关机、批量销户 支持批量号码的开机、关机、销户操作。 开流量、停流量 单号码详情页可以操作该号码的开流量、停流量操作。 号码查询 按号码/imsi/iccid查询 支持根据号码、imsi、iccid来查询。 按状态查询 支持根据状态来查询。 查询测试期/沉默期号码 支持平台内测试期
号码检查的意义 所有通过小米平台申请的sim卡,都会经过自动化号码检查,以保证给到客户手上的sim卡是可用,并且没有问题的。故障的sim卡会以邮件的形式报障,并且会有专人跟踪修复。 下单号码检查 每次号码申请,配置号码数据后会立即进行当前订单下的号码检查。 每日抽查 每日会对所有订单进行抽查,抽查部分sim卡,进行号码检查。 每月初检查 每月会对所有订单所有号码进行检查。 月初会把平台内所有的号码
新版SDS(生态云帐号) or 老版SDS(开放平台开发者帐号) 新版SDS与老版SDS功能相同,仅帐号授权体系不同,新版SDS基于生态云帐号,老版SDS基于开放平台开发者帐号。 推荐大家使用新版SDS,方便团队人员变迁与管理。 开通生态云账号 注册开放平台开发者帐号 * 生态云账号 开通生态云账号 生成/获取密钥 进入用户管理 获取云密钥 图中团队的ID加上CI前缀是SDS中授权中的Grante
信号是由操作系统传给进程的中断,会提早终止一个程序。在 UNIX、LINUX、Mac OS X 或 Windows 系统上,可以通过按 Ctrl+C 产生中断。 有些信号不能被程序捕获,但是下表所列信号可以在程序中捕获,并可以基于信号采取适当的动作。这些信号是定义在 C++ 头文件 <csignal> 中。 信号 描述 SIGABRT 程序的异常终止,如调用 abort。 SIGFPE 错误的算术
手机号授权 产品简介 为方便开发者通过用户手机号关联自身用户体系或开展业务,同时也为了方便用户使用小程序进一步提升用户体验,小程序平台对外开放用户手机号授权能力。该能力会在获得用户授权后,且在充分保护用户隐私的前提下,帮助开发者便捷获取用户手机号。 手机号授权功能基于国际标准的 OAuth2.0 授权机制,在得到用户授权的情况下,获取用于换取用户信息的令牌,通过调用宙斯开放平台上的用户手机号接口获
函数原型 #include <signal.h> int sigsuspend(const sigset_t *mask); 描述 用mask所指的信号集临时替代调用进程的信号屏蔽,然后挂起调用进程直到有不属于mask的信号到达为止。 返回值 一直返回-1,有错误会设置errno 相关函数 [[pause()|pause]]
本节包括sigaction函数和结构体sigaction两个部分。 函数sigaction System Call用于测试和改变一个信号的行为。 函数原型 #include <signal.h> int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact); 参数
对一个信号指定新动作或回到其原先的动作 函数原型 #include <signal.h> typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t handler); 参数 signum即信号值。后面的handler就是处理这个信号的动作。它的值为: SIG_DFL:默认动作 SIG_IGN:忽略
函数原型 #include <signal.h> int raise(int sig); 描述 发送一个sig信号给当前进程。raise()是线程安全的函数。与kill()的不同之处是,kill()发射信号给指定的进程(通过pid参数) 当raise()发射的信号,导致了一个信号句柄被调用的时候,raise()在信号句柄返回之后被返回。 返回值 成功0,失败返回非0值(不一定是-1) 相关函数 [
函数原型 #include <sys/types.h> #include <signal.h> int kill(pid_t pid,int sig); 描述 pid 描述 >0 kill发送信号sig给进程pid 0 kill发送信号给和当前进程在同一进程组的所有进程 -1 信号发送给系统内的所有进程 <-1 kill发送信号sig给进程组-pid中的每个进程 返回值 如果成功完成返回值0 失败
函数原型 #include <signal.h> void psignal(int sig, const char *msg); 描述 打印sig对应信号的描述信息到标准错误流。 参数 sig为信号对应的数。 msg如果不为NULL,那么将msg作为输出消息的前缀。在msg和消息描述之间默认会有一个冒号和一个空格。 相关函数 [[psiginfo|psiginfo]]
4. 捕捉信号 4.1. 内核如何实现信号的捕捉 如果信号的处理动作是用户自定义函数,在信号递达时就调用这个函数,这称为捕捉信号。由于信号处理函数的代码是在用户空间的,处理过程比较复杂,举例如下: 用户程序注册了SIGQUIT信号的处理函数sighandler。 当前正在执行main函数,这时发生中断或异常切换到内核态。 在中断处理完毕后要返回用户态的main函数之前检查到有信号SIGQUIT递达
3. 阻塞信号 3.1. 信号在内核中的表示 以上我们讨论了信号产生(Generation)的各种原因,而实际执行信号的处理动作称为信号递达(Delivery),信号从产生到递达之间的状态,称为信号未决(Pending)。进程可以选择阻塞(Block)某个信号。被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作。注意,阻塞和忽略是不同的,只要信号被阻塞就不会递达,而忽
2. 产生信号 2.1. 通过终端按键产生信号 上一节讲过,SIGINT的默认处理动作是终止进程,SIGQUIT的默认处理动作是终止进程并且Core Dump,现在我们来验证一下。 首先解释什么是Core Dump。当一个进程要异常终止时,可以选择把进程的用户空间内存数据全部保存到磁盘上,文件名通常是core,这叫做Core Dump。进程异常终止通常是因为有Bug,比如非法内存访问导致段错误,事