草庐IT

random_int

全部标签

linux - 绕过 dev/urandom|random 进行测试

我想编写一个功能测试用例,用已知的随机数值测试程序。我已经在单元测试期间用模拟对其进行了测试。但我也希望将其用于功能测试(当然不是全部:)只为一个进程覆盖/dev/urandom的最简单方法是什么?有没有办法对单个文件执行类似chroot的操作,并让所有其他文件“通过”? 最佳答案 如果您的系统足够新(例如RHEL7)并且支持setns系统调用,则可以借助挂载命名空间来完成。需要根访问权限。想法是为进程创建一个单独的挂载命名空间,并在该命名空间内通过/dev/random绑定(bind)挂载一些其他文件或FIFO,以便来自该挂载命名

linux - 绕过 dev/urandom|random 进行测试

我想编写一个功能测试用例,用已知的随机数值测试程序。我已经在单元测试期间用模拟对其进行了测试。但我也希望将其用于功能测试(当然不是全部:)只为一个进程覆盖/dev/urandom的最简单方法是什么?有没有办法对单个文件执行类似chroot的操作,并让所有其他文件“通过”? 最佳答案 如果您的系统足够新(例如RHEL7)并且支持setns系统调用,则可以借助挂载命名空间来完成。需要根访问权限。想法是为进程创建一个单独的挂载命名空间,并在该命名空间内通过/dev/random绑定(bind)挂载一些其他文件或FIFO,以便来自该挂载命名

c - 将 char * 数字转换为 int32_t 的正确方法

我想将数字从char*格式转换为32位整数int32_t,但strtol()返回long。我不知道long在我的机器上的长度。将来可能是32位或64位或其他版本。将字符串转换为32位整数int32_t的正确且可靠的方法是什么?或者将long转换为int32_t。比较_MAX和_MIN常量是唯一且最简单的方法吗? 最佳答案 使用sscanf使用来自的格式说明符宏之一,例如SCNd32或SCNi32:int32_ti;sscanf(str,"%"SCNd32,&i);这些从C99开始可用。

c - 将 char * 数字转换为 int32_t 的正确方法

我想将数字从char*格式转换为32位整数int32_t,但strtol()返回long。我不知道long在我的机器上的长度。将来可能是32位或64位或其他版本。将字符串转换为32位整数int32_t的正确且可靠的方法是什么?或者将long转换为int32_t。比较_MAX和_MIN常量是唯一且最简单的方法吗? 最佳答案 使用sscanf使用来自的格式说明符宏之一,例如SCNd32或SCNi32:int32_ti;sscanf(str,"%"SCNd32,&i);这些从C99开始可用。

关于 printf() long unsigned int 和 uint32_t 的编译器警告

在我的C代码中,我正在fprintfing"%lu"并为相应的字段提供uint32_t。但是,当我在GCC(版本4.2.4)中使用-Wall进行编译时,我收到以下警告:writeresults.c:16:warning:format'%4lu'expectstype'longunsignedint',butargument2hastype`uint32_t'uint32_t和longunsignedint在32位架构上不是一回事吗?如果不消除-Wall编译器开关或使用类型转换(如果可以,如何),是否可以避免此警告?是的,我仍在使用32位计算机/arch/OS/编译器(目前太穷了,买不起

关于 printf() long unsigned int 和 uint32_t 的编译器警告

在我的C代码中,我正在fprintfing"%lu"并为相应的字段提供uint32_t。但是,当我在GCC(版本4.2.4)中使用-Wall进行编译时,我收到以下警告:writeresults.c:16:warning:format'%4lu'expectstype'longunsignedint',butargument2hastype`uint32_t'uint32_t和longunsignedint在32位架构上不是一回事吗?如果不消除-Wall编译器开关或使用类型转换(如果可以,如何),是否可以避免此警告?是的,我仍在使用32位计算机/arch/OS/编译器(目前太穷了,买不起

linux - 从 int 到 socklen 的无效转换

下面是我的Linux代码。我正在实现客户端/服务器应用程序,下面是服务器.cpp文件。intmain(){intserverFd,clientFd,serverLen,clientLen;structsockaddr_unserverAddress;/*Serveraddress*/structsockaddr_unclientAddress;/*Clientaddress*/structsockaddr*serverSockAddrPtr;/*Ptrtoserveraddress*/structsockaddr*clientSockAddrPtr;/*Ptrtoclientaddre

linux - 从 int 到 socklen 的无效转换

下面是我的Linux代码。我正在实现客户端/服务器应用程序,下面是服务器.cpp文件。intmain(){intserverFd,clientFd,serverLen,clientLen;structsockaddr_unserverAddress;/*Serveraddress*/structsockaddr_unclientAddress;/*Clientaddress*/structsockaddr*serverSockAddrPtr;/*Ptrtoserveraddress*/structsockaddr*clientSockAddrPtr;/*Ptrtoclientaddre

c - 如何使用 LD_PRELOAD 包装 ioctl(int d, unsigned long request, ...)?

这是我使用LD_PRELOAD包装函数的模板:intgettimeofday(structtimeval*tv,structtimezone*tz){staticint(*gettimeofday_real)(structtimeval*tv,structtimezone*tz)=NULL;if(!gettimeofday_real)gettimeofday_real=dlsym(RTLD_NEXT,"gettimeofday");returngettimeofday_real(tv,tz);}我意识到ioctl似乎具有以下签名:intioctl(intd,unsignedlongre

c - 如何使用 LD_PRELOAD 包装 ioctl(int d, unsigned long request, ...)?

这是我使用LD_PRELOAD包装函数的模板:intgettimeofday(structtimeval*tv,structtimezone*tz){staticint(*gettimeofday_real)(structtimeval*tv,structtimezone*tz)=NULL;if(!gettimeofday_real)gettimeofday_real=dlsym(RTLD_NEXT,"gettimeofday");returngettimeofday_real(tv,tz);}我意识到ioctl似乎具有以下签名:intioctl(intd,unsignedlongre