小编Ari*_*zis的帖子

如何防止SIGPIPE(或正确处理它们)

我有一个小型服务器程序,它接受TCP或本地UNIX套接字上的连接,读取一个简单的命令,并根据命令发送一个回复.问题是客户端有时可能对答案没兴趣并且提前退出,因此写入该套接字将导致SIGPIPE并使我的服务器崩溃.什么是防止崩溃的最佳做法?有没有办法检查线的另一边是否还在读?(select()似乎在这里不起作用,因为它总是说套接字是可写的).或者我应该用处理程序捕获SIGPIPE并忽略它?

c io signals sigpipe broken-pipe

242
推荐指数
8
解决办法
19万
查看次数

在有人推送rebase或重置到已发布的分支后,如何恢复/重新同步?

我们都听过一个人应该重订,从未发表的作品,它的危险,等等.但是,我还没有看到张贴如何处理的情况下衍合情况的任何食谱出版.

现在,请注意,只有存储库仅由已知(并且最好是很小)的人群克隆,这才真正可行,这样无论谁推送rebase或重置,都可以通知其他人他们下次需要注意的时候取(!).

如果你没有本地提交foo并且它被重新定位,我看到的一个明显的解决方案将起作用:

git fetch
git checkout foo
git reset --hard origin/foo
Run Code Online (Sandbox Code Playgroud)

foo根据远程存储库,这将简单地抛弃本地状态以支持其历史记录.

但是,如果一个人在该分支机构进行了大量的本地更改,那么如何处理这种情况呢?

git rebase git-rebase git-reset

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

为什么每个分支的git stash不是唯一的?

我认为它允许将更改从一个分支移动到下一个分支,但这是樱桃选择的目的,如果您没有提交更改,也许您不应该移动它们?

我偶尔会在错误的分支上应用错误的存储,这让我对这个问题感到疑惑.

git git-stash

79
推荐指数
4
解决办法
2万
查看次数

直接访问DBI有什么问题?

我正在阅读Effective Perl Programming(第2版).我遇到过一段被​​描述为写得不好的代码,但我还不了解它的内容是什么,或者它应该如何改进.如果有人可以向我解释这件事,那就太棒了.

这是有问题的代码:

sub sum_values_per_key {
   my ( $class, $dsn, $user, $password, $parameters ) = @_;
   my %results;

   my $dbh = 
     DBI->connect( $dsn, $user, $password, $parameters );

   my $sth = $dbh->prepare(
     'select key, calculate(value) from my_table');
   $sth->execute();

   # ... fill %results ...

   $sth->finish();
   $dbh->disconnect();

   return \%results;
}
Run Code Online (Sandbox Code Playgroud)

该示例来自测试代码的章节(第324/325页).让我想知道如何改进代码的句子如下:

由于代码写得很差并直接访问DBI,因此您必须创建一个假的DBI对象来代替真实的东西.

我可能还没有理解这本书迄今为止试图教给我的很多东西,或者我已经跳过了相关部分以了解上述代码的不良做法......好了,先谢谢你的帮助!

perl unit-testing coding-style dbi

6
推荐指数
4
解决办法
333
查看次数

Perl正则表达式匹配和删除

我有一个字符串,开始//#...上升到换行符.我已经找到了正则表达式,这就是这个..#([^\n]*).

我的问题是如果以下条件匹配,如何从文件中删除此行

regex perl

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

便携式捕获信号并向用户报告问题的方法

如果由于某些奇迹在我们的程序中发生了段错误,我想要捕获SIGSEGV并让用户(可能是GUI客户端)知道一个返回码,发生了严重的问题.同时我想在命令行上显示信息以显示捕获的信号.

今天我们的信号处理程序如下:

void catchSignal (int reason) {
  std :: cerr << "Caught a signal: " << reason << std::endl;
  exit (1);
}
Run Code Online (Sandbox Code Playgroud)

我可以听到上面的恐怖尖叫声,正如我从这个帖子中读到的那样,从信号处理程序中调用一个不可重入的函数是邪恶的.

是否有便携式方式处理信号并向用户提供信息?

编辑:或至少在POSIX框架内可移植?

c c++ posix signals reentrancy

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