我正在尝试使用errno来检测我是否执行了导致溢出的操作.然而,虽然我写了一个故意溢出的功能,但是errno == ERANGE是假的.这里发生了什么?
这是代码:
#include <stdio.h>
#include <errno.h>
int main(int argc, char* argv[]) {
unsigned char c = 0;
int i;
for (i = 0; i< 300; i++) {
errno = 0;
c = c + 1;
if (errno == ERANGE) {// we have a range error
printf("Overflow. c = %u\n", c);
} else {
printf("No error. c = %u\n", c);
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我预计这会在我们添加1到255的位置发出溢出错误,但没有错误.这是(截断的)输出:
No error. c = 245
No error. c = …Run Code Online (Sandbox Code Playgroud) 我写了一个简单的echo服务器,其中包括以下行:
int yes = 1;
if (setsockopt(socketfd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int)) == -1) {
perror("setsockopt");
exit(1);
}
Run Code Online (Sandbox Code Playgroud)
尽管如此,当我尝试呼叫bind我最近使用的套接字时,我仍然会收到错误.事实上,如果我试图调用bind我在这个程序中使用的套接字,即使它不是最近的 - 就像它们没有被内核或其他东西清除一样,我会收到此错误.我还有别的办法吗?
这是完整的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <unistd.h>
void prepareHints(struct addrinfo *hints, int tcp_udp) {
memset(hints, 0, sizeof(struct addrinfo));
hints->ai_family = AF_UNSPEC;
hints->ai_socktype = (tcp_udp == 1) ? SOCK_STREAM : SOCK_DGRAM;
hints->ai_flags = AI_PASSIVE; /* autofill IP */
}
void writeSocket(int fd, const char *msg) {
size_t …Run Code Online (Sandbox Code Playgroud) 我刚刚启动了 Redis 并且正在玩弄它。以下工作正常:
SET billybob "hello"
+OK
Run Code Online (Sandbox Code Playgroud)
但是,以下失败:
SET billybob "hey how are you"
-ERR syntax error
Run Code Online (Sandbox Code Playgroud)
我认为 SET 适用于任何键/值,并且大概一个值可以是任何字符串......但不是带有空格的字符串?这里有什么故事?
我希望用户将命令行参数传递给我在Rust中编写的简单函数.我知道我可以int::from_str(args[1])用来转换,但这会返回一个Option<int>,这意味着为了将它传递给一个函数,int如下所示,我必须使用一个match语句.但是有了n个参数,就有2 ^ n种可能性.match用一些东西编写一系列嵌套语句会很糟糕.如果有办法做某事,那将是理想的:
// will return either Some(int) or None
let start = int::from_str(args[1]), end = int::from_str(args[2]);
if typeof(start) == Some && typeof(end) == Some {
println(fmt!("You entered: %d, %d", start, end);
} else {
println("Error with arguments.");
}
Run Code Online (Sandbox Code Playgroud)
有没有这样的方法?这让我可以测试枚举中的哪个成员match?
有没有办法ZipFile通过传入 zip 文件的文字字节来初始化对象,而不是让它读取文件名?我正在构建一个不需要接触磁盘的宁静应用程序;它只是打开文件,对其进行一些处理,重新压缩并发送它。
我正试图用一些代码来测试我的服务器:
describe 'POST /do/some/stuff/', ->
it 'should do this thing', (done) ->
request app
.post '/do/some/stuff/'
.timeout 10000
.expect 200
.end (err, res) ->
return done err if err?
done()
Run Code Online (Sandbox Code Playgroud)
服务器正在做的事情通常需要几秒钟,这比默认超时2000毫秒长,所以我打电话.timeout 10000.但是,尽管如此,当我运行代码时,我得到:
1) POST /do/some/stuff/ should do this thing:
Error: timeout of 2000ms exceeded
Run Code Online (Sandbox Code Playgroud)
我需要做些什么来增加此超时?
我有一个假的bash函数,如:
has_error() {
true
echo "Ok..."
false
echo "Shouldn't be here!"
}
Run Code Online (Sandbox Code Playgroud)
当我运行此函数并检查错误状态时,我希望发生什么:
> has_error; echo $?
Ok...
1
Run Code Online (Sandbox Code Playgroud)
但实际发生了什么:
> has_error; echo $?
Ok...
Shouldn't be here!
0
Run Code Online (Sandbox Code Playgroud)
问题是该函数在抛出错误后继续执行,而且,我甚至无法检测到抛出了错误.我怎么能改变这个?我可以set -e在函数的开头放一个,但是如果抛出错误,我的整个shell都会终止.我想要的是简单地让它返回并将退出状态设置为1.我可以&&通过插入命令之间或通过后缀每一行来完成它|| return 1,但这些都不是很优雅.这样做的正确方法是什么?
编辑:
似乎我不够清楚,因为很多回复似乎表明我实际上并不知道如何在bash中执行测试.正如我上面提到的,我知道我可以在我的函数中手动测试每个命令,并根据需要返回或处理错误.我也知道我可以set -e并且导致我的shell会话因错误而终止.但我要问的是:有没有办法让函数停止继续执行 - 没有明确的测试 - 如果该函数中的任何命令返回非零状态?
我有一个这样的脚本:
#!/bin/sh
echo "hello"
echo "goodbye"
exit 1
Run Code Online (Sandbox Code Playgroud)
当我自己运行它时,我得到了我预期的失败退出代码。
$ ./fail.sh
hello
goodbye
$ echo $?
1
Run Code Online (Sandbox Code Playgroud)
但是,当我运行它时grep -v,退出状态更改为成功:
$ ./fail.sh | grep -v hello
goodbye
$ echo $?
0
Run Code Online (Sandbox Code Playgroud)
有没有办法将命令的输出通过管道输入grep -v并仍然正确传播状态代码?当然,在现实世界中,这样做的目的是过滤嘈杂命令的输出,同时仍然检测命令是否失败。
我有一个用于构建docker映像的脚本。该脚本启动docker commitdocker 容器,在其上执行一些命令,然后对图像进行固定。当我提交一个带有映像名称/标签的映像,然后又提交带有相同映像名称/标签的映像时,我希望删除上一个映像,因为这时它仅占用了磁盘空间。相反,它会停留在周围(我可以在中看到它docker images,其存储库和标签都列为<none>)。有没有办法让docker自动删除这些替换的图像?
我是初学者和CSS的新手.我有一些看起来像这样的HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>My Site</title>
<link rel="stylesheet" href="/css/bootstrap-theme.css">
<link rel="stylesheet" href="/css/font-awesome.css">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-1"><span class="fa fa-caret-down"></span></div>
<div class="col-md-1"><span id="cool-title">My Site</span></div>
<div class="col-md-1">
<input type="text" placeholder="Search" class="search-bar">
</div>
<div class="col-md-1">
<button class="btn btn-default"><i class="fa fa-search col-md-1"></i></button>
</div>
</div>
<div id="main">
</div>
</div>
<script src="/js/jquery.js"></script>
<script src="/js/bootstrap.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我希望所有这些col-div都被内联,但它们都出现在他们自己的行上:

这里发生了什么?